我正在为对象实例层次结构创建一个编辑器。编辑器有一个面板,其子控件根据对象的字段而有所不同。因此,对于具有整数字段的类型A,它将具有微调控件;对于具有字符串字段的类型B,它将具有TextBox。等等。
问题是,你如何在MVVM中实现这一目标?
答案 0 :(得分:3)
您可以在XAML代码中使用ContentControl
并绑定某种类型(事件系统类型 - 您想要的):
<ContentControl Content="{Binding YourProperty}"/>
(YourProperty是ViewModel附加到视图的属性)
然后你必须创建渲染视图的DataTemplate:
<DataTemplate DataType="{x:Type system:int}">
<views:MyWindow/>
</DataTemplate>
系统和视图是xaml代码中的命名空间。在这个例子中,我使用system:int类型,但它可以是您的自定义类型。 MyWindow
是UserControl
对象 - 因此您基本上可以在解决方案中创建另一个WPF UserControl
文件。
它的工作原理如下。 ContentControl
获取Content
并检查其类型。它会查找可以将此类型转换为某些DataTemplate
(可以是text,textbox,ect)的View
,可以将其呈现为Content
。
祝你好运