WPF MVVM - 单个PropertyChanged可以更新DataTemplate的所有数据绑定吗?

时间:2009-07-16 01:36:36

标签: wpf xaml data-binding mvvm

我有一个ViewModel类,它有很多属性(Say 50)。将数据设置为我需要更新UI的所有属性。我知道常见的解决方案是在所有属性设置器上引发 PropertyChanged

我想知道是否有任何方法可以通过单个通知通知我的DataTemplate更新其所有绑定?一个想法是使用IsLoaded属性来提高属性,但是如何使用它来更新整个DataTemplate。我对整个XAML解决方案感兴趣。

2 个答案:

答案 0 :(得分:49)

最后我得到了我的同事Josh Smith的答案,这很简单,我们只需要用 null或String.Empty 作为财产名称。这将告诉WPF绑定系统重新评估该对象的所有绑定。使用它时,我获得了两大优势。

  1. 在每个属性上提升单个事件的开销将减少到从View-Model到UI的一个事件。性能 会增加。
  2. 在编写代码时,我们可以使用{get; set;}语法,这种语法很简洁 写
  3. 假设:正如我在这里假设的那样,这是一个非常特殊的条件,我的所有属性都会同时更新

    我有blogpost discussing this here

    更新:根据kek444的评论

答案 1 :(得分:0)

我不认为这是一个值得尝试解决的问题。也就是说,我认为这里的解决方案是让各个属性在设置时发送属性更改的通知。如果没有,当一个单独的财产(但不一定是所有五十个)改变时你打算做什么?