0

此 UI 包含一个 Main.xaml,其中包含一个包含 (Person.xaml) 的导航框架,因此涉及两个不同的视图模型。

在此处输入图像描述

单击 Main.xaml 中的菜单时,我想过滤数据网格的内容。

  • 人(显示全部)
  • 50分以上
  • 分数低于 50

我的方法是通过让 PersonViewModel 订阅从 MainViewModel 发送的特定消息来使用 MVVM 轻型消息传递。这会起作用,但是还有其他方法可以做到这一点(最佳实践)吗?

如果有更好的方法来解决这个问题,我不想为来自不同视图模型的 UI 元素需要通信的所有场景实现 MvvmLight 消息传递。

4

3 回答 3

2

如果您使用的是 MVVM light,我猜您已经在 ViewModelLocator 中创建了这些视图模型。因此,只需使用它来访问应用程序中的视图模型。

另一种方法是使用某种类型的 IoC 容器,例如 Unity 或 SimpleIoC。

我希望这可以帮助你。

于 2012-06-26T18:42:01.377 回答
1

我们也使用 MVVM 灯。根据我对您的要求的理解。您可能只使用一个 DomainContext ,然后将所有实体加载到其中,然后查询每个点击项的上下文。

一旦你有了一个上下文,你基本上可以动态地查询它。这是我的代码之一。

 GetUserBUGroups = SecurityDomainContext.Current.UserBUGroups.Where(ub => ub.UserID == GetUsers.UserID).OrderBy(o => o.BUGroup.BUGroupDesc).ToList();
于 2012-06-26T19:45:50.233 回答
0

对于这样的简单场景,使用多个 ViewModel 似乎并不合适。我相信您应该直接在 PersonViewModel 中插入过滤器选项

于 2012-06-26T18:25:36.543 回答