我正在研究WPF应用程序。该应用程序具有主窗口(主视图),该主窗口被“数据绑定”到主视图模型。这个主视图是实例化主视图模型的。
在此主窗口中,以编程方式创建子视图(即用户控件)。主窗口具有下拉列表,允许用户选择不同的视图。每个usercontrol视图都有一个相应的视图模型。
当用户选择下拉选项时,会触发要创建的新视图模型。然后,我使用数据模板将视图模型模板化为关联视图的实例,如下所示:
<DataTemplate DataType = "{x:Type ViewModels:MyViewModel}">
<Views:MyView />
</DataTemplate>
我的问题:如何将“MyView”数据绑定到“MyViewModel”?我假设我需要向MyView.xaml添加一个合适的datacontext,但是,我不知道如何做到这一点,因为'MyView'没有创建'MyViewModel'的实例。我本质上想将我的视图数据绑定到以前存在的视图模型。有什么想法吗?
编辑:事实证明我的视图自动数据绑定到我的视图模型的数据模板。但是,我不确定为什么这只是神奇地起作用。这是怎么回事?
答案 0 :(得分:0)
您必须使用contentcontrol绑定viewmodel。像这样。
<ContentControl DataContext="{Binding ViewModels}" Content="{Binding Path=CurrentlySelectedComboBoxViewModel}">
<ContentControl.Resources>
<DataTemplate DataType="{x:Type vm:TypeAViewModel}">
<StackPanel>
<local:TypeAUserControl />
</StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:TypeBViewModel}">
<StackPanel>
<local:TypeBUserControl />
</StackPanel>
</DataTemplate>
</ContentControl.Resources>
</ContentControl>