0

我正在为对象实例层次结构创建一个编辑器。编辑器有一个面板,其子控件根据对象的字段而有所不同。因此,对于具有整数字段的类型 A,它将具有微调器控件;对于具有字符串字段的类型 B,它将具有一个 TextBox。等等。

问题是,你如何在 MVVM 中实现这一点?

4

1 回答 1

3

您可以ContentControl在 XAML 代码中使用并绑定到某种类型(事件系统类型 - 您想要的):

<ContentControl Content="{Binding YourProperty}"/>

(YourProperty 是附加到视图的 ViewModel 的属性)

那么你必须创建渲染视图的 DataTemplate:

<DataTemplate DataType="{x:Type system:int}">
    <views:MyWindow/>
</DataTemplate>

系统和视图是您的 xaml 代码中的命名空间。在此示例中,我使用 system:int 类型,但它可以是您的自定义类型。MyWindow是一个UserControl对象 - 所以你基本上UserControl在你的解决方案中创建另一个 WPF 文件。

它是这样工作的。ContentControl得到它Content并检查它的类型。它寻找DataTemplate可以将此类型转换为View可以呈现为Content.

此致

于 2013-07-12T12:47:20.853 回答