WPF - Databind动态控制类型

时间:2009-11-02 09:53:02

标签: c# wpf data-binding xaml controls

我有一个Person类。一个人可以有一个相关的控制。我可以通过数据绑定显示控件吗?

例如:名称:Bill,Control:TextBox      名称:Bob,Control:ComboBox      姓名:Dan,Control:CheckBox

我的资源字典中有以下xaml

<DataTemplate x:Key="PersonTemplate">
        <DockPanel >
            <TextBlock FontWeight="Bold" Text="Name: " DockPanel.Dock="Left" Margin="5,0,10,0"/>
            <TextBlock Text="{Binding FirstName}" Foreground="Green" FontWeight="Bold" />
       </DockPanel>
</DataTemplate>

我想将关联的用户控件添加到dockpanel,这可以完成吗

像是什么?

<DataTemplate x:Key="PersonTemplate">
        <DockPanel >
            <TextBlock FontWeight="Bold" Text="Name: " DockPanel.Dock="Left" Margin="5,0,10,0"/>
            <TextBlock Text="{Binding FirstName}" Foreground="Green" FontWeight="Bold" />
            <Control Type = "{Binding Control}"/>
       </DockPanel>
</DataTemplate>

由于 丹

2 个答案:

答案 0 :(得分:1)

我认为在这种情况下你可以使用ContentControl:

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

那只会渲染你给它的任何东西。如果Person的“Control”属性是WPF控件,它将呈现它。

答案 1 :(得分:1)

至少在最初阶段,这对我有用:

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

注意:如果您的UI在多个位置绑定到此属性,则可能会因为尝试在多个位置为控件提供父级而获得异常。