【发布时间】:2012-03-20 15:41:02
【问题描述】:
我们如何使用 MEF Container 在 ViewModel 中注入 IRegionManager。我必须在 ViewModel 的命令委托中切换视图。这是我在做什么的简要说明。我有一个名为 Product 的实体,其列表显示在一个视图 (ProductListView) 中。在该视图中,用户可以选择产品并单击编辑按钮。这将切换视图并呈现一个新视图(ProductEditView)。为了激活不同的视图,我需要像这样对 IRegionManager 的引用
public class ProductListVM : NotificationObject { //The Product List View Model
[Import]
public IRegionManager RegionManager { get; set; }
private void EditProduct() { //EditCommand fired from ProductListView
IRegion mainContentRegion = RegionManager.Regions["MainRegion"];
//Switch the View in "MainContent" region.
....
}
}
以上代码因 RegionManager 的 NullReferenceException 而失败。这似乎是合乎逻辑的,因为上面的 View Model 是 WPF 通过 Xaml 中的 DataContext 属性构造的,并且 DI 没有发挥作用,因此它没有机会导入 RegionManager 实例。在这种情况下我们如何解析 IRegionManager。
【问题讨论】: