문제

토글 버튼이있는 컨트롤 템플릿이 있습니다. 이 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 속성을 버그로 수정하는 것을 고려합니다. 속성이 동기화되지 않는 경우 명령이 더 나은 솔루션 일 수 있습니다.

다른 팁

  1. Twoway 바인딩을 사용해야합니다
  2. 일시 정지 속성을 포함하는 객체가 inotifyPropertyChanged를 지원하는지 확인하십시오.
  3. 일시 정지 된 세트가 PropertyChanged 이벤트를 트리거하는지 확인하십시오.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top