일관되지 않은 결합 결과를 얻는 이유는 무엇입니까?
-
05-07-2019 - |
문제
토글 버튼이있는 컨트롤 템플릿이 있습니다. 이 ToggleButton에는 종속 속성에 묶여있는 일방적 인 속성이 있습니다. 의존 속성을 명시 적으로 설정하면 바인딩이 작동합니다.
문제는 그 것입니다 ~ 후에 UI의 토글 버튼과 상호 작용합니다. 종속성 속성을 명시 적으로 설정하면 바인딩이 위조 속성을 업데이트하지 않습니다.
나는 잘 작동하는 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;
해결책
WPF는 대상 특성 (이 경우에 icechecked)이 수정 될 때 바인딩을 삭제합니다. ischecked가 수정되었을 때 바인딩을 유지하는 데 사용되는 Silverlight. 일시 정지가 나중에 설정되면이 값은 ischecked를 덮어 쓸 것입니다.
당신에 따르면, 은빛이 WPF 행동으로 되돌아가는 것 같습니다. 오, 음. 개인적으로, 나는 binded 속성을 버그로 수정하는 것을 고려합니다. 속성이 동기화되지 않는 경우 명령이 더 나은 솔루션 일 수 있습니다.
다른 팁
- Twoway 바인딩을 사용해야합니다
- 일시 정지 속성을 포함하는 객체가 inotifyPropertyChanged를 지원하는지 확인하십시오.
- 일시 정지 된 세트가 PropertyChanged 이벤트를 트리거하는지 확인하십시오.
제휴하지 않습니다 StackOverflow