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

Job*_*Joy 24 data-binding wpf xaml mvvm

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

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

Job*_*Joy 50

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

  1. 在每个属性上引发单个事件的开销将减少到从View-Model到UI的一个事件.性能会提高.
  2. 在编写代码时,我们可以使用{get; set;}语法,这种语法干净且写法较少

假设:正如我在这里假设的那样,这是一个非常特殊的条件,我的所有属性都在同一时间得到更新

我有一篇博文在这里讨论这个问题

更新:根据kek444的评论

  • 来自msdn:"PropertyChanged事件可以通过使用null引用(在Visual Basic中为Nothing)或String.Empty作为PropertyChangedEventArgs中的属性名称来指示对象上的所有属性都已更改." 第一线,我猜几乎每个人(包括我自己)都错过了 - doh! (10认同)