Silverlight MVVM从用户控件添加记录

时间:2010-12-27 18:50:27

标签: silverlight mvvm

我有一个用户控件来搜索容器号码。如果用户输入了系统新的容器编号,那么我想告诉VM“我有一个要添加的新记录”。

MVVM方法避免在创建代码隐藏时使用事件与VM通信。我应该创建一个依赖属性来触发VM,但我认为我没有看到其他具有“NewRecord”属性的控件?

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

一种好方法是使用Mediator模式 - 大多数MVVM库都会有某种pub / sub机制,例如MvvmLight中的“Messenger”或Prism中的EventAggregator。

基本上,您的“容器搜索VM”发布了一条“NewRecord”消息,可能使用记录实例作为有效负载,并且应用程序的感兴趣部分订阅该消息并执行他们需要做的事情。对象,因为它在列表中显示...

希望这有帮助,

答案 1 :(得分:0)

<强>的ObservableCollection

看一下ObservableCollection课程。具体来说,当您向此集合添加新项目时,它将触发INotifyCollectionChanged事件,其中NotifyCollectionChangedAction.Add和NewItems设置为添加的项目。

此类是MVVM中常用于将数据绑定到不断变化的项集合的内容。您应该能够通过数据绑定将其轻松地耦合到您的UI。在您完成应用程序行为时,它还应该帮助您处理“在我完成新记录处理之前添加了第二项”。