【发布时间】:2011-03-08 09:50:56
【问题描述】:
我想知道当集合发生变化时我是否有任何方法可以处理,然后向用户显示一条消息。
由于我使用 MVVM,我在视图项目中没有对模型的任何引用,所以我不能这样做
MyCollection col = InstanceOfViewModel.Read();
由于 View 对“MyCollection”一无所知,我不想在 if 中测试方法本身,就像上面的代码:
if(InstanceOfViewModel.Read().Count == 0)
所以我想到了命令。我已经在使用一个来处理我的保存和更新条件(而不是大量的 if)。但现在我被困住了。我不知道我应该做什么/使用原因,ObservableCollections 暴露了一个事件,CollectionChanged。
一种解决方案可能是:让视图模型订阅此事件,当它发生时,检查计数是否等于 0,如果为真,则向用户显示:“您的搜索未检索到任何行”或其他任何内容。但我不喜欢在视图模型、消息和任何类型的用户交互中使用 MESSAGEBOXES 我试图委托给视图
但我想知道我是否可以使用命令来完成,或者我是否在一个相对容易实现的事情上变得过于复杂。
等待答案并提前致谢!
【问题讨论】:
-
我认为当你说“......我变得太复杂......”时,你应该相信你的直觉,这个集合首先是如何更新的?
-
Wonko,这个 ViewModel 公开了一个方法 Read,它使用模型类的实例,让我们调用 Employee。因此,每次我需要更新 EmployeeCollection 时,我都会使用 Employee 实例,该实例调用其特定 DAO 的 Read 方法,并返回 ObservableCollection
EmployeeCollection = MyEmployeeInstance.Read();返回员工集合;就这样。所有模型都继承自一个通用接口,一种策略模式实现。但是,是的,有时我把事情弄得太复杂了。也许我应该订阅 CollectionChanged 并完成它。
标签: wpf mvvm command observablecollection