此UI由Main.xaml组成,其中包含一个保存(Person.xaml)的导航框架,因此涉及两个不同的视图模型。
我想在点击Main.xaml中的菜单时过滤数据网格的内容。
我的方法是通过让PersonViewModel订阅从MainViewModel发送的特定消息来使用MVVM light Messaging。这可行,但有没有其他方法(最佳实践)?
如果有更好的方法可以解决这个问题,我讨厌为所有场景实现MvvmLight Messaging,其中来自不同视图模型的UI元素需要进行通信。
答案 0 :(得分:2)
如果您正在使用MVVM灯,我想您已经在ViewModelLocator中创建了这些视图模型。因此,只需使用它来访问应用程序中的视图模型即可。
另一种方法是使用某种类型的IoC容器,如Unity或SimpleIoC。
我希望这会对你有所帮助。
答案 1 :(得分:1)
我们也使用MVVM灯。从我对你的要求的理解。你可以只使用一个DomainContext,然后将所有实体加载到它,然后查询每个点击项的上下文。
一旦有了Context,你基本上可以动态查询它。这是我的一个代码中的内容。
GetUserBUGroups = SecurityDomainContext.Current.UserBUGroups.Where(ub => ub.UserID == GetUsers.UserID).OrderBy(o => o.BUGroup.BUGroupDesc).ToList();
答案 2 :(得分:0)
对于诸如此类的简单场景,使用多个ViewModel似乎不合适。 我相信你应该直接在PersonViewModel中插入过滤器选项