我有DataGrid
绑定到集合视图模型。元素视图模型具有名为UI UIElement
的属性。方案是我希望生成的UIElement
被绑定。
例如(想象中的玩具示例),假设UIElement
是带有文本Foo的TextBlock
,那么我希望DataGrid
包含TextBlock
行带有文字Foo。
我想要这个的原因在这里并不重要。
那么如何将一个数据绑定到UIElement
类型的属性,其中UIElement
被注入为数据绑定内容?
答案 0 :(得分: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;
}
}
}