【发布时间】:2011-12-29 23:56:48
【问题描述】:
我正在尝试在 WPF 中构建一组典型的 CRUD 维护表单 - 除了它们适用于不同的数据库记录之外,它们几乎相同。
我没有为每个窗口类创建一个新的窗口类,而是尝试使用单个窗口类,该窗口类为每个数据库表使用不同的 ViewModel 类进行实例化,并且我为每个 ViewModel 定义了不同的 UserControl。
因此,如果我将其 DataContext 设置为 Record1ViewModel 实例的窗口实例化,我想使用 Record1UserControl 在窗口中显示它,如果它设置为 Record2ViewModel 实例,我想使用 Record2UserControl 显示它。
通过直接在窗口的 XAML 中定义它们,我验证了这两个用户控件都可以正常工作。但是我还没有弄清楚如何根据 ViewModel 的类型来选择其中一个。
这不起作用:
<myWindow.Resources>
<DataTemplate x:Key="{x:Type ViewModels:Record1ViewModel}">
<MaintenanceControls:Record1 />
</DataTemplate>
<DataTemplate x:Key="{x:Type ViewModels:Record2ViewModel}">
<MaintenanceControls:Record1 />
</DataTemplate>
</myWindow.Resources>
<ContentPresenter Content="{Binding}" />
我在 ContentPresenter 中得到的是类型的名称。未使用数据模板。
有什么想法吗?
【问题讨论】:
-
实际上,如果我使用