【问题标题】:Binding is not updating multiple UI elements绑定不更新多个 UI 元素
【发布时间】:2011-07-22 23:30:54
【问题描述】:

我的 Silverlight 页面上有按钮,其中不透明度绑定到我的 ViewModel 上的两个属性之一。我正在使用更改属性的按钮命令,理论上会影响绑定到该属性的所有按钮,但唯一受影响的控件是启动命令的按钮(其中任何一个)。

关于为什么附加绑定不起作用的任何想法?

整个事情实际上有点复杂,其中按钮位于控件上,绑定作为 DependencyProperties 映射回 VM,并且绑定的属性通过 ValueConverter。

【问题讨论】:

  • 正如你所说的“理论上”它应该可以工作,但如果没有重现问题的样本就不可能回答。

标签: silverlight mvvm binding


【解决方案1】:

听起来您需要为正在更改的属性引发INotifyPropertyChanged.PropertyChanged 事件。这将使绑定到它们的控件知道发生了更改,并且它们需要返回并获取最新值。

【讨论】:

  • 已经完成了。这就是被按下的按钮如何改变它的不透明度。绑定到同一 VM 属性的其他按钮不会发生这种情况。
【解决方案2】:

我发现了问题。不透明度绑定不起作用,但发生的事情是按钮根据我在 RelayCommand 中设置的谓词禁用自身。它看起来像我想要的效果,但只影响被按下的按钮,因为每个按钮都绑定到一个单独的 ICommand。

我对其进行了更改以删除从 OpacityProperty 到 IsEnabledProperty 的更改绑定,并从 RelayCommand 声明中删除了谓词。现在一切正常。

我不知道为什么按钮在检查谓词时会变为禁用视图(并发现它为假),但如果条件发生变化,则永远不会变回来。奇怪。

【讨论】:

    猜你喜欢
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多