【发布时间】:2011-03-14 10:08:49
【问题描述】:
场景如下:
我有一个“订单查找”用户控件,允许用户浏览订单并选择一个。订单查找用户控件嵌入了一个“订单详细信息”用户控件,在选择订单之前它是不可见的,此时它会显示订单详细信息。
问题是 - 如何将选定的 OrderID 传递给订单详细信息用户控件并从订单查找用户控件中获取要加载的订单(即设置订单详细信息视图模型的 CurrentOrderID 属性,并调用它的 LoadOrder 方法),在一种 MVVM 友好的方式(即没有对任一用户控件控件的代码引用)。
如果我可以从订单查找的视图模型中引用订单详细信息的视图模型的活动实例,那将很简单,但我不知道该怎么做。
我目前的方法是将 CurrentOrderID 属性设为静态(这样我就可以从订单查找的视图模型中设置它,而无需参考订单详细信息的视图模型的活动实例),并在订单详细信息中运行一个间隔为 1 秒的计时器viewmodel 检查 CurrentOrderID 属性的变化。然而,这有难闻的气味和一些不必要的副作用!
【问题讨论】:
-
UserControls 是同一个视图的一部分吗?您使用的是 MVVM-light 还是类似的东西?
-
分离视图。全部手工编码 - 没有框架。
标签: wpf mvvm silverlight-4.0 user-controls