在MEFedMVVM
视图模型中使用ViewModelLocator
. MEFedMVVM
非常强大,因为您可以为视图模型使用任意构造函数:
[ExportViewModel("MyViewModel")]
public class MyViewModel : NotifyPropertyChangedBase
{
[ImportingConstructor]
public MyViewModel(IMediator mediator, IContainerStatus containerStatus, IDispatcherService dispatcherService)
{
}
}
IMediator
,IContainerStatus
并且IDispatcherService
是通过 实例化的服务接口MEF
。显然,如果需要,我可以创建自己的服务。
问题
当我的视图已加载时,它需要为其子级只读属性之一的成员分配来自视图模型的数据。理想情况下,我会直接将此变量绑定到 中XAML
,但我不能这样做,因为该属性是只读的并且它的成员不是可附加属性。目前,我有一个丑陋的解决方法:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
var viewModel = DataContext as MyViewModel;
this.child.SomeReadonlyProperty.Data = viewModel.MyData;
}
我想摆脱视图和视图模型的这种耦合。两者都MEFedMVVM
提供Prism
可能有用的不同模式,但我不知道该使用哪个 - 以及如何使用。可以让服务同时访问视图和视图模型吗?
问:我应该使用什么模式来移除联轴器?