我对MVVM有点新意,并且想知道
假设我已经定义了ObservableCollection<Differences> Diffs
属性。
我还有以下财产:
public bool IsSame
{
get
{
return Diffs.Count == 0;
}
}
我不知道我应该如何为OnPropertyChanged
实现IsSame
,因为它是从Diff列表中隐含的。
OnCollectionChanged
事件,然后检查它是否发生变化IsSame
? OnCollectionChanged
?非常感谢。
答案 0 :(得分:3)
我是否应该使用支持字段并处理List OnCollectionChanged?
要正确地做到:是的。
当相关属性更改为源时,它会引发所有事件。这里的主要问题是检测IsSame
实际发生变化的时间(即从1变为0或从0变为1)。您需要一个支持字段,否则您将更频繁地提高事件(然后是必需的)。
答案 1 :(得分:1)
当你收集更改时,你应该调用OnPropertyChanged(“IsSame”); - 那就对了。但是何时调用取决于你的viewmodel逻辑。
编辑:假设你有一个添加和删除命令,那么你必须调用OnPropertyChanged(“IsSame”);在这些方法中。