silverlight - 为什么我得到不一致的绑定(bind)结果

标签 silverlight data-binding controltemplate

我有一个带有切换按钮的控件模板。此 ToggleButton 的 IsChecked 属性以一种方式绑定(bind)到依赖属性。如果我显式设置依赖属性,则绑定(bind)有效。

问题是,我与 UI 中的切换按钮交互后,如果我显式设置依赖属性,则绑定(bind)不会更新 IsChecked 属性。

我确实有一个使用 TwoWay 绑定(bind)的工作方案,效果很好。我的问题是,为什么它会这样?我错过了什么吗? Silverlight的绑定(bind)机制是否有bug?

编辑以包含片段:

ControlTemplate 中的绑定(bind)看起来类似于(可以用 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;

最佳答案

当目标属性(本例中为 IsChecked)被修改时,WPF 会删除单向绑定(bind)。 Silverlight 用于在 IsChecked 被修改时保留绑定(bind)。如果稍后设置 Paused,该值也会覆盖 IsChecked。

根据您的说法,Silverlight 似乎恢复了 WPF 行为。那好吧。就我个人而言,我认为修改绑定(bind)属性是一个错误。如果属性不应该同步,命令可能是更好的解决方案。

关于silverlight - 为什么我得到不一致的绑定(bind)结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1411265/

相关文章:

wpf - Silverlight TreeView 。无法绑定(bind) "IsExpanded"属性

WPF RadioButton 已知问题 : why the old property value seems still binding after property changed

未应用 WPF 自定义控件模板

iphone - 有没有办法测试浏览器是否支持 flash/silverlight?

c# - 独立存储中的绑定(bind)图像

javascript - 带有 JavaScript 的 silverlight

c# - 带有 DataTemplateSelector 和绑定(bind)内容的 ContentControl

wpf - 将 double 绑定(bind)到文本框

wpf - 具有默认模板和 itemTemplate 的递归菜单项

wpf - 自定义控件边框画笔属性不一致?