C# 使用MEF将viewmodel注入视图-从源绑定不起作用-WPF

C# 使用MEF将viewmodel注入视图-从源绑定不起作用-WPF,c#,wpf,mvvm,prism,mef,C#,Wpf,Mvvm,Prism,Mef,我使用MEF容器将viewmodel注入到视图中,如下所示: [ImportingConstructor] public MainView(IRepository repository, MainViewModel viewModel) { InitializeComponent(); mMainViewModel = viewModel; DataContext = viewModel; viewModel

我使用MEF容器将viewmodel注入到视图中,如下所示:

    [ImportingConstructor]
    public MainView(IRepository repository, MainViewModel viewModel)
    {
        InitializeComponent();
        mMainViewModel = viewModel;
        DataContext = viewModel;
        viewModel.PropertyChanged += OnViewModelPropertyChanged;
    }
一切正常。我在视图和视图模型上都有导出属性

问题在于,当通过某种方法更新ViewModel上的value\属性时,它不会反映在UI上。我甚至尝试将模式设置为双向-仍然不工作。我对所有属性设置程序调用了
OnPropertyChanged
,但没有工作。但是,在视图的代码隐藏中,如果我将
propertychanged
事件方法附加到viewmodel,我将获得事件通知,这是我能够使用它们更新视图的唯一方法,但这应该不是必需的。我只是不知道为什么我的视图没有直接响应绑定元素上的
propertychanged
通知


我可能做错了什么?

发现了问题。事实证明,在我的抽象ViewModelBase类中,我更改了notifypropertychanged的函数…但是我没有更改类名上的INotifyPropertyChanged,尽管我实现了该方法..愚蠢的错误。一定错过了。提出了另一个问题…为什么我们必须在类上有接口定义才能工作?…好了,现在一切都好了。现在一切正常

为什么要通过constructor向视图中注入任何内容?在处理MVVM时,没有有效的理由。你的基本概念是错误的,你能解释一下你所说的基本概念是错误的吗?我知道我可以做构造函数注入或属性注入。对于视图,我选择了构造函数注入,以便设置DataContext。这种方法有什么问题?谢谢。看看MVVMlight是如何将MainViewModel绑定到MainView的(这是在XAML中完成的)。将存储库注入视图的原因是什么?我使用的是MEF而不是MVVMLIGHT,其中有viewlocator…请提供您的VM代码。WPF绑定不会查看类是否具有事件属性更改,它只是查询类是否实现INotifyPropertyChanged