2009-09-11 3 views
2

토글 버튼이있는 컨트롤 템플릿이 있습니다. 이 ToggleButton에는 IsChecked 속성이 종속 속성에 바인딩 된 한 가지 방법이 있습니다. dependancy 속성을 명시 적으로 설정하면 바인딩이 작동합니다.일관성없는 바인딩 결과가 나타나는 이유

UI에서 토글 단추와 상호 작용하는 문제는 입니다. 종속성 속성을 명시 적으로 설정하면 바인딩에서 IsChecked 속성을 업데이트하지 않습니다.

나는 잘 작동하는 TwoWay 바인딩을 사용하여 작업 공간을 가지고 있습니다. 제 질문은, 왜 이런 식으로 행동할까요? 내가 놓친 게 있니? Silverlight의 바인딩 메커니즘에 버그가 있습니까?

다음은 ControlTemplate이 바인딩은 (TemplateBinding로 대체 될 수 있습니다) 같은

<ToggleButton x:Name="PlayPause" Grid.Column="0" 
       IsChecked="{Binding Paused, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" 
       HorizontalAlignment="Center" 
       Width="50" Height="50"/> 

종속성 속성의 명시 적 설정은 상당히 늪지 표준을 보이는 :

편집 조각을 포함 :

myComponent.Paused = true; 
+0

문제를 설명하기 위해 작은 코드 샘플을 게시하면 도움이됩니다. –

답변

2

WPF는 하나의 방법 바인딩을 삭제합니다하여 PropertyChanged 이벤트를 트리거 있는지 확인합니다. IsChecked가 수정되었을 때 Silverlight에서 바인딩을 유지하는 데 사용되었습니다. Paused가 나중에 설정된 경우이 값은 IsChecked를 덮어 씁니다.

당신에 따르면 Silverlight가 WPF 동작으로 되돌아 간 것으로 보입니다. 오 잘. 개인적으로, 나는 binded 속성을 버그로 수정하는 것을 고려한다. 속성이 동기화 명령이 아니라면 더 나은 해결책이 될 수 있습니다.

1
  1. 요 TwoWay 바인딩을 사용해야합니다.
  2. Paused 속성이 포함 된 개체가 INotifyPropertyChanged를 지원하는지 확인하십시오.
  3. 는 일시 중지에 대한 세터 (이 경우의 IsChecked) 대상 속성이 수정 될 때
관련 문제