使用UserControl时更改数据上下文

时间:2011-02-12 16:32:58

标签: wpf binding

我正在使用一个简单的主窗口,其中包含2个自定义用户控件(我已创建) 这些用户控件具有每个的模型视图代码文件(即时使用MVVM模式)。 每个ModelView文件都包含单个Command(以及Execute和CanExecute的命令实现)。 问题是当我需要激活每个命令时(通过MainWindow导致主窗口保存那些自定义用户控件)我需要更改DataContext 主窗口到当前处于焦点的控件的ViewModel其他人无法执行该命令(UserControl.xaml内的命令绑定无法找到命令)。 我认为在关注UserControl之后跟踪以便更改MainWindow DataContext不是这样的。 是否有人在遇到这种问题之前?

感谢。

1 个答案:

答案 0 :(得分:2)

解决此问题的方法是为主窗口创建一个ViewModel,并为此VM添加两个属性,一个用于之前创建的每个ViewModel。

这样,您可以将新VM分配给Window的DataContext,并将每个用户控件的DataContext绑定到其中一个属性。

将命令放在要使用它的正确VM上。 这有意义吗?

顺便说一下:你把ModelView称为ViewModel。