-1
我正在处理WPF应用程序。此应用程序具有一个主窗口(主视图),可以将数据绑定到主视图模型。这个主视图是实例化主视图模型。如何将视图绑定到WPF中已有的视图模型?
在此主窗口中,以编程方式创建子视图(即usercontrols)。主窗口具有允许用户选择不同视图的下拉列表。每个用户控件视图都有一个相应的视图模型。
当用户选择下拉选项时,会触发一个新的视图模型被创建。然后我用数据模板与模板视图模型到相关观点的一个实例,如下图所示:
<DataTemplate DataType = "{x:Type ViewModels:MyViewModel}">
<Views:MyView />
</DataTemplate>
我的问题:我该如何去有关数据绑定“MyView的”到“MyViewModel”?我假设我需要为MyView.xaml添加适当的数据上下文,但是,我不知道如何做到这一点,因为'MyView'没有创建'MyViewModel'的实例。我基本上想要将我的视图绑定到以前存在的视图模型上。有任何想法吗?
编辑:事实证明,我的看法自动databinds到我的视图模型的数据模板。不过,我不确定为什么这只是神奇的作品。这里发生了什么?
这并不神奇。这就是WPF的_designed_和_documented_。当WPF将模板映射到您的视图模型对象时,它必然具有您的视图模型对象引用,并且它只是简单地将模板的顶级元素的'DataContext'设置为该视图模型。它实际上非常简单,比WPF为了实际查找首先使用的模板(为什么不认为_that_部分是魔术?)要简单得多。 –