如何将视图数据绑定到 WPF 中已存在的视图模型?



我正在开发一个WPF应用程序。此应用程序具有一个主窗口(主视图(,该窗口"数据绑定"到主视图模型。此主视图是实例化主视图模型的实例化。

在此主窗口中,以编程方式创建子视图(即用户控件(。主窗口具有一个下拉列表,允许用户选择不同的视图。每个用户控件视图都有相应的视图模型。

当用户选择下拉选项时,这将触发要创建新的视图模型。然后,我使用数据模板化将视图模型模板化为关联视图的实例,如下所示:

<DataTemplate DataType = "{x:Type ViewModels:MyViewModel}">
<Views:MyView />
</DataTemplate>

我的问题:如何将"MyView"绑定到"MyViewModel"?我假设我需要向MyView.xaml添加适当的数据上下文,但是,鉴于"MyView"没有创建"MyViewModel"的实例,我不知道该怎么做。我本质上是想将我的视图数据绑定到以前存在的视图模型。有什么想法吗?

编辑:事实证明,我的视图会自动数据绑定到我的视图模型的数据模板。但是,我不确定为什么这会神奇地起作用。这是怎么回事?

您必须将视图模型与 contentcontrol 绑定。喜欢这个。

<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>

最新更新