数据绑定,其中数据的类型为 UIElement



我有一个绑定到集合视图模型的DataGrid。元素视图模型具有一个名为 UI 的属性,其类型为UIElement。场景是我希望绑定生成的UIElement

例如(虚构的玩具示例),假设UIElement是一个带有文本 Foo 的TextBlock,那么我希望DataGrid具有带有文本 Foo 的TextBlock行。

我想要这个的原因在这里并不重要。

那么,如何将数据绑定到类型UIElement的属性,其中UIElement作为数据绑定内容注入?

好吧,我想你可以继续这样做。

我相信这一小段代码几乎可以做你想要的。

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

相关内容

  • 没有找到相关文章

最新更新