我有一个用户控件来搜索容器号码。如果用户输入了系统新的容器编号,那么我想告诉VM“我有一个要添加的新记录”。
MVVM方法避免在创建代码隐藏时使用事件与VM通信。我应该创建一个依赖属性来触发VM,但我认为我没有看到其他具有“NewRecord”属性的控件?
有什么想法吗?
答案 0 :(得分:0)
一种好方法是使用Mediator模式 - 大多数MVVM库都会有某种pub / sub机制,例如MvvmLight中的“Messenger”或Prism中的EventAggregator。
基本上,您的“容器搜索VM”发布了一条“NewRecord”消息,可能使用记录实例作为有效负载,并且应用程序的感兴趣部分订阅该消息并执行他们需要做的事情。对象,因为它在列表中显示...
希望这有帮助,
答案 1 :(得分:0)
<强>的ObservableCollection 强>
看一下ObservableCollection课程。具体来说,当您向此集合添加新项目时,它将触发INotifyCollectionChanged事件,其中NotifyCollectionChangedAction.Add和NewItems设置为添加的项目。
此类是MVVM中常用于将数据绑定到不断变化的项集合的内容。您应该能够通过数据绑定将其轻松地耦合到您的UI。在您完成应用程序行为时,它还应该帮助您处理“在我完成新记录处理之前添加了第二项”。