2017-06-02 25 views
0

我使用MEF容器像下面注入我的视图模型,以我的观点:注射视图模型查看与MEF - 从源绑定不工作 - WPF

[ImportingConstructor] 
    public MainView(IRepository repository, MainViewModel viewModel) 
    { 
     InitializeComponent(); 
     mMainViewModel = viewModel; 
     DataContext = viewModel; 
     viewModel.PropertyChanged += OnViewModelPropertyChanged; 
    } 

,一切工作正常。我在视图和视图模型上都有导出属性。

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

任何想法我可能做错了什么?谢谢。

+0

为什么你想要通过构造器注入任何东西?在处理MVVM时没有任何有效的理由。你的基本概念是错误的 –

+0

你能解释一下基本概念是什么意思吗?我知道我可以做建设者注入或属性注入。在视图的情况下,我选择了构造函数注入,所以我可以设置DataContext。这种方法有什么问题?谢谢。 –

+0

看看MVVMlight如何将MainViewModel绑定到MainView(它在XAML中完成)。将库注入View的原因是什么? –

回答

0

发现此问题。原来,在我的抽象ViewModelBase类中,我有notifypropertychanged的功能...但我没有对类名INotifyPropertyChanged,虽然我实现了方法..愚蠢的错误。一定错过了它。带来另一个问题......为什么我们必须在课堂上有界面定义才能发挥作用?......好吧,现在一切都很好。现在工作正常。

+0

WPF绑定不会看该类是否有事件PropertyChanged,它只是查询该类是否实现INotifyPropertyChanged –