我遵循簡單的方法here並有一個DataGrid動態生成列允許DataTemplates動態使用和綁定。如何將DataTemplateSelector與DataGridBoundColumn一起使用?
for (int i = 0; i < testDataGridSourceList.DataList[0].Count; i++)
{
var binding = new Binding(string.Format("[{0}]", i));
CustomBoundColumn customBoundColumn = new CustomBoundColumn();
customBoundColumn.Header = "Col" + i;
customBoundColumn.Binding = binding;
customBoundColumn.TemplateName = "CustomTemplate";
TestControlDataGrid.TestDataGrid.Columns.Add(customBoundColumn);
}
每個列是類型CustomBoundColumn從DataGridBoundColumn
導出的public class CustomBoundColumn : DataGridBoundColumn
{
public string TemplateName { get; set; }
protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem)
{
var binding = new Binding(((Binding)Binding).Path.Path);
binding.Source = dataItem;
var content = new ContentControl();
content.ContentTemplate = (DataTemplate)cell.FindResource(TemplateName);
content.SetBinding(ContentControl.ContentProperty, binding);
return content;
}
protected override FrameworkElement GenerateEditingElement(DataGridCell cell, object dataItem)
{
return GenerateElement(cell, dataItem);
}
}
我現在想用一個DataTemplateSelector以允許每行使用不同的DataTemplate而不是僅僅使用「CustomTemplate」示出的在第一個片段。我怎樣才能做到這一點?
一個不同的DataTemplate取決於什麼? – Natxo
根據在該行上顯示的數據類型(我填充了一個基類列表,但每行實際上可能是一個不同的派生類,我想在DataTemplate中使用一些額外的屬性) – Caustix