- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们如何使用 MEF 容器在 ViewModel 中注入(inject) IRegionManager。我必须在 ViewModel 的命令委托(delegate)中切换 View 。这是我正在做的事情的简要描述。我有一个名为 Product 的实体,其列表显示在一个 View (ProductListView) 中。在该 View 中,用户可以选择产品并单击“编辑”按钮。这将切换 View 并呈现一个新的 View (ProductEditView)。为了激活不同的 View ,我需要像这样的 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 模型是由 WPF 通过 Xaml 中的 DataContext 属性构建的,并且 DI 没有发挥作用,因此它没有机会导入 RegionManager 实例。在这种情况下我们如何解析IRegionManager。
最佳答案
可以使用以下方法在 Bootstrap 中导出容器实例
container.ComposeExportedValue<CompositionContainer>(container);
然后在viewmodel中,可以使用代码导入IRegionManager实例
IServiceLocator serviceLocator = ServiceLocator.Current;
CompositionContainer container = serviceLocator.GetInstance<CompositionContainer>();
RegionManager = container.GetExportedValue<IRegionManager>();
但是,在 ViewModel 中引用 View 违反了 MVVM 模式。但由于我正在关注一篇文章here为了学习 Prism,我也必须相处得一样。另外这篇文章是在 Silverlight 中的,我必须找到一种在 wpf 中导入 RegionManager 的方法,这有点不同。
问候,涅槃。
关于wpf - Prism - 如何使用 MEF 在 ViewModel 中导入 IRegionManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9789990/
我们如何使用 MEF 容器在 ViewModel 中注入(inject) IRegionManager。我必须在 ViewModel 的命令委托(delegate)中切换 View 。这是我正在做的事
我有一个可以创建另一个 ViewModel 的 ViewModel。 我想将此 ViewModel 设置为现有 View 的数据上下文,然后导航到该 View 。 在 MyViewModel 中 pr
在 Composite WPF (Prism) ,在向 IRegionManger 集合添加模块时,使用 IRegion.Add 和 IRegionManager.RegisterViewWithRe
我是一名优秀的程序员,十分优秀!