为计算的属性实现INotfyPropertyChanged

时间:2012-07-31 06:57:34

标签: c# wpf mvvm inotifypropertychanged inotifycollectionchanged

我对MVVM有点新意,并且想知道

假设我已经定义了ObservableCollection<Differences> Diffs属性。 我还有以下财产:

public bool IsSame
{
    get
    {
         return Diffs.Count == 0;
    }
 }

我不知道我应该如何为OnPropertyChanged实现IsSame,因为它是从Diff列表中隐含的。

  • 我应该附加到列表OnCollectionChanged事件,然后检查它是否发生变化IsSame
  • 我是否应该使用支持字段并处理列表OnCollectionChanged

非常感谢。

2 个答案:

答案 0 :(得分:3)

  

我是否应该使用支持字段并处理List OnCollectionChanged?

要正确地做到:是的。

当相关属性更改为源时,它会引发所有事件。这里的主要问题是检测IsSame实际发生变化的时间(即从1变为0或从0变为1)。您需要一个支持字段,否则您将更频繁地提高事件(然后是必需的)。

答案 1 :(得分:1)

当你收集更改时,你应该调用OnPropertyChanged(“IsSame”); - 那就对了。但是何时调用取决于你的viewmodel逻辑。

编辑:假设你有一个添加和删除命令,那么你必须调用OnPropertyChanged(“IsSame”);在这些方法中。