2009-11-02 33 views
2

我有一個Person類。一個人可以有一個關聯的控制。我可以通過數據綁定顯示控件嗎?WPF - Databind動態控件類型

如:姓名:比爾,控制方式:文本框 名稱:鮑勃,控制:組合框 名稱:丹,控制:複選框

我有我的資源字典

<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> 

我下面的XAML想添加關聯的用戶控制到dockset,可以做到這一點

有點像?

<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> 

感謝 丹

回答

1

這個工作對我來說,至少在最初階段:

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

注意:如果你的UI綁定到這個屬性在多個地方,你可以得到一個例外,由於企圖父在多個控制地方。

+0

我一直在努力讓這個工作,但我很短缺。我期望下面顯示一個文本框: public class Person { public string Name {get;組; } public TextBox ControlType = new TextBox(){Text =「test」}; } 。 2009-11-02 16:22:55

+0

抱歉,格式丟失!可以重新發布,如果那幫助? – 2009-11-02 16:23:58

+0

@Dan,在你的示例類中,我會嘗試使ControlType成爲'全功能'C#屬性而不是公共字段。 – mackenir 2009-11-02 17:41:50

1

我想你可以在這種情況下使用一個ContentControl中:

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

這隻會使得無論你給它。如果Person的「Control」屬性是WPF控件,它會渲染該屬性。