2012-11-07 51 views
0

我有一個DataGrid綁定到集合視圖模型。元素視圖模型有一個稱爲UI的屬性UIElement。該方案是我想要生成的UIElement被綁定。數據是UIElement類型的數據綁定

因此,例如,(假想的玩具爲例),說UIElementTextBlock用文本富,那麼我想DataGrid擁有的TextBlock的行與文本富。

我想要這個的原因在這裏並不重要。

那麼如何將一個數據綁定到UIElement類型的屬性,其中UIElement作爲數據綁定內容被注入?

回答

1

那麼,你可以繼續前進,我猜。

這一小段代碼,幾乎你想要做什麼,我相信..

XAML:

<DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTemplateColumn> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <ContentControl Content="{Binding UI}" /> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 

代碼隱藏:

public partial class MainWindow : Window 
{ 
    public List<Model> Items { get; set; } 

    public MainWindow() 
    { 
     InitializeComponent(); 

     var textblock = new TextBlock(); 
     textblock.Text = "I'm a textblock"; 

     var button = new Button(); 
     button.Content = "I'm a button"; 

     var combobox = new ComboBox(); 
     combobox.Items.Add("Item1"); 
     combobox.Items.Add("Item2"); 

     this.Items = new List<Model>(new[] { 
      new Model(textblock), 
      new Model(button), 
      new Model(combobox) 
     }); 

     this.DataContext = this;  
    } 

    public class Model 
    { 
     public UIElement UI { get; set; } 

     public Model(UIElement ui) 
     { 
      this.UI = ui; 
     } 
    } 
} 
+0

完美的答案!太感謝了。 :-) –