MVVM中的WPF动态面板创建

时间:2013-07-12 12:37:48

标签: c# wpf mvvm

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

然后你必须创建渲染视图的DataTemplate:

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

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

它的工作原理如下。 ContentControl获取Content并检查其类型。它会查找可以将此类型转换为某些DataTemplate(可以是text,textbox,ect)的View,可以将其呈现为Content

祝你好运