如何使用多个ViewModel处理One View并触发不同的命令?

时间:2010-03-11 05:04:26

标签: wpf command inotifypropertychanged mvvm

我有一个senario,其中一个视图和视图与多个ViewModel绑定。

EG。 One View显示Phone Detail和ViewModel,如下所示:

  • 手机基本功能 - PhoneViewModel,
  • 手机价格详情 - PhoneSubscriptionViewModel,
  • 手机配件 - PhoneAccessoryViewModel
  • 对于一般属性 - PhoneDetailViewModel

我已将View的常规属性放到PhoneViewModel.Now senario是这样的:

默认情况下,View显示与 ObservationCollection of PhoneViewModel 绑定的Phone Basic功能。我的视图有按钮 - '查看附件',点击此按钮一个弹出屏幕 - 在我的设计中我显示/隐藏网格并用 ObservationCollection的PhoneAccessoryViewModel 绑定它。 / p>

现在问题开始 - 附件列表也有按钮'查看详细信息'onclick我必须打开一个弹出屏幕,这里我也放置了一个网格和可见/隐藏它。我将'ViewAccessoryDe​​tailCommand'命令绑定到'查看详细信息'按钮。在命令执行时,一个函数触发并设置Visible the Popup屏幕的属性。

使用此类编程命令触发,函数调用但属性更改不会引发,因此我的视图不会显示弹出窗口。

要点: 一个视图 - > ViewModel1 - > Grid绑定视图ViewModel2 - > Grid Have Button和Onclick显示与ViewModel3绑定的新Grid - 此命令触发但属性不会升起。

我认为我的方法存在一些问题,请给出你的建议。

2 个答案:

答案 0 :(得分:1)

在WPF中,通过将查看DataContext设置为 ViewModel,将查看连接到 ViewModel 即可。

由于每个控件只能有一个DataContext 查看只能有一个 ViewModel

答案 1 :(得分:1)

我不确定我是否完全按照你要问的方式,但我会回答你。 我昨天发布了(可能)类似问题的答案。

Query on MVVM pattern in WPF?

MVVM - what is the ideal way for usercontrols to talk to each other

我不确定是否有,但我希望这有帮助。