我有一个带切换按钮的控件模板。这个ToggleButton的IsChecked属性是绑定到dependance属性的一种方式。如果我明确设置dependancy属性绑定工作。
问题是在之后我与UI中的切换按钮进行交互时,如果我明确设置了依赖项属性,绑定不会更新IsChecked属性。
我确实有一个使用TwoWay绑定的工作,工作正常。我的问题是,它为什么会这样?我错过了什么吗? Silverlight的绑定机制中是否存在错误?
编辑包括SNIPPET:
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)
当修改目标属性(在本例中为IsChecked)时,WPF会删除单向绑定。 Silverlight用于在修改IsChecked时保持绑定。如果稍后设置了Paused,则此值也会覆盖IsChecked。
根据你的说法,似乎Silverlight恢复了WPF的行为。那好吧。就个人而言,我考虑将绑定属性修改为bug。如果属性不是同步命令,则可能是更好的解决方案。
答案 1 :(得分:1)