2010-08-05 2 views
3

오늘 어떤 경우에는 바인딩이 자동으로 분리된다는 것을 상기시키는 문제에 직면했습니다. 내가 확실하지 오전하지만 여기에 시나리오 -바인딩이 자동으로 분리되는 경우

나는 속성에 바인딩 메뉴 항목을 첨부 (INotifyPropertyChanged을 구현), 다음과 같이 - 그 검사 이벤트 핸들러에서 이제

IsChecked="{Binding Path=DisplayLongUnit, Mode=TwoWay}" 

난 후 그 IsChecked 값을 업데이트 이런 상태를 검사하십시오 -

If(condition == true){menuItem.IsChecked = true} 

이제 바인딩이 계속 첨부됩니까? (나는 어딘가에서 그것이 잃어 버릴 것을 읽는 것을 기억한다).

바인딩이 자동으로 분리되는 시나리오가 있습니까?

내가 찾을 수있는 하나는 여기에 언급

-

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/08d6e4c4-47ab-44f3-b19a-c0ab872fb1a8

답변

0

당신이 바인딩 두 방법을 시도 해 봤나? 문제가 무엇인지

IsChecked="{Binding Path=DisplayLongUnit, Mode=TwoWay}" 
0

더 구체적인 예는 여기에 있습니다 :
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/4165daed-2eaf-450b-a082-63d79ff9fd3e

당신은 바인딩 모드 두 가지 방법 (당신의 재산이 너무 업데이트됩니다 그 방법을 할 수 있습니다, 내가 돈 ' t는 IsChecked의 기본값이 무엇인지 알고 있지만 항상 명시 적으로 사용하는 것이 가장 좋습니다.) 또는 단순히 IsChecked 속성 대신 DisplayLongUnit 속성을 변경합니다.

+0

답장을 보내 주셔서 감사합니다. Carrotman이지만 제 질문에 제공된 구속력있는 예와 관련하여 문제가 없습니다. 문제는 일부 시나리오에서 재설정 또는 손실되는 바인딩에 관한 것입니다. – akjoshi

0

"IsCheckable"을 true로 설정하는 것을 잊지 마십시오. 거짓이면 TwoWay 바인딩이 작동하지 않습니다. 다음과 같은 데이터 바인딩 된 MenuItem은 코드 숨김없이 작동합니다 :

<MenuItem Header="Select sense" ItemsSource="{Binding Path=AvailableSenses}" > 
    <MenuItem.ItemContainerStyle> 
     <Style TargetType="MenuItem"> 
      <Setter Property="Header" Value="{Binding Path=Sense.English}" /> 
      <Setter Property="IsCheckable" Value="True" /> 
      <Setter Property="IsChecked" Value="{Binding Path=IsSelected, Mode=TwoWay}" /> 
     </Style> 
    </MenuItem.ItemContainerStyle> 
</MenuItem> 
5

바인딩이 분리되었는지 확인하는 방법 : 바인딩을 디버깅하는 것입니다. 먼저 진단 네임 스페이스를 XAML에 추가합니다. 다음은 창에 대한 예입니다 (명확성을 위해 다른 일반적인 네임 스페이스를 제거했습니다) :

<Window xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"> 

그러면 바인딩에서 추적을 활성화합니다. 지금, 당신은 를 분리 "를 포함하여 바인딩에 대한 정보를 볼 수 프로그램을 실행할 때 비주얼 스튜디오의 출력 탭에 보면

<TextBox Text={Binding FirstName, diagnostics:PresentationTraceSources.TraceLevel=High} /> 

: 다음은 텍스트 상자의 Text 속성에 바인딩 세트 예입니다 "그것이 분리되었을 때.

그래서 이것은 분리 된 이유를 알려주지 않습니다. 그래도 도움이 될 수 있습니다.

관련 문제