使用命令通知集合已更改

时间:2010-06-25 18:00:53

标签: wpf mvvm command observablecollection

我想知道当一个集合发生变化时我是否可以处理任何方式,然后向用户显示一条消息。

因为即时通讯使用MVVM,我在视图项目中没有对模型的任何引用,所以我无法做到

MyCollection col = InstanceOfViewModel.Read();

由于View对“MyCollection”一无所知,我不想在if中测试方法本身,就像上面的代码一样:

if(InstanceOfViewModel.Read().Count == 0)

所以我想到了命令。我已经用一个来处理我的保存和放大更新条件(而不是吨的if)。但现在我被困了。我无法弄清楚我应该做什么/使用什么原因,ObservableCollections暴露了一个事件,CollectionChanged。

一个解决方案可能是:让viewmodel订阅此事件,当它发生时,检查计数是否等于0,如果为true,则向用户显示:“您的搜索没有检索到任何行”或其他任何内容。但我不喜欢在视图模型,消息和任何类型的用户交互中使用MESSAGEBOXES我试图委托给视图

但我想知道我是否可以使用COMMANDS来做,或者如果我在一个相对容易实现的事情上变得过于复杂。

等待答案并提前致谢!

1 个答案:

答案 0 :(得分:0)

如果你的集合在一个视图模型中并且你正在使用onPropertyChanged ...任何时候你的整个集合发生变化(而不是单个项目)它会触发onPropertychanged你可以在onPropertyChanged方法中查看...也许我不是理解你的代码结构...