我不确定我是否正确设计(引导得到赞赏!),但我有一个从很多地方调用的搜索视图。搜索屏幕拥有自己的ViewModel。当用户从搜索屏幕中选择某些内容时(在搜索:)之后,我需要将选择发送到请求进行搜索的任何视图(搜索屏幕是弹出窗口)。
我有一个视图定位器,当我发送消息时会弹出屏幕。消息从ViewModel(MVVM Light)发送到视图定位器。
我是否注册了回电?广播消息?设置房产?动态地将搜索屏幕上的“选择”按钮绑定回发起呼叫的视图模型?
此致 理查德
答案 0 :(得分:1)
我不确定MVVM Light是否有等同于EventAggregator的内容,但这是我能想到的最佳方式来播放此事件。
另一种选择是使用Reactive Extensions (Rx)并让接收者在打开搜索视图之前使用过滤器订阅事件,然后将过滤器传递给搜索视图,以便使用该过滤器调用实际操作过滤,因此即使搜索视图模型请求搜索是将接收事件的其他视图模型。
答案 1 :(得分:1)
我遇到了类似的问题,这就是我的做法。
我的Pop Up窗口的ViewModel有所不同,视图模型获取了要返回的对象的参数,例如你有MainViewModel和一个属性Customer。在PopupViewModel构造函数中,我从MainViewModel传递了Customer。当我进行搜索并找到您要查找的客户时,请将该客户分配给MainViewModel的客户参考。假设您已经实现了INotifyPropertyChange接口,一旦您选择了客户,它就会显示在主屏幕中。如果你理解我会告诉我,或者我会给你发一个例子。
希望这会有所帮助。
答案 2 :(得分:0)
我建议您将引用传递给interface元素,使调用转发给您的搜索。据我所知,所有这一切都发生在视图模型层。
另一个选项是在搜索结果或搜索对象中设置一个标志,用于注册调用哪个接口。在这种情况下,我不确定如何进行回调。