[英]WPF DataGrid with different UserControl in each Cell
我有一個看起來像這樣的數據模型:
public class Model
{
public string DisplayAs {get;set;} // TextBox, CheckBox, ComboBox
public string Value {get;set;}
public string DisplayName {get;set;} // Row1, Row2, ...
}
現在我想在Datagrid中顯示這些模型,如下所示:
我怎么能實現這個目標? 請提供一些示例代碼。 我用不同類型的DataTemplateSelectors嘗試了一整天,但我無法讓它工作
您的選擇器根據其DisplayAs
值為第二列中的單元格選擇模板。 您必須將模板添加到DataGrid.Resources
。 然后在第二列中,指定CellTemplateSelector
public class DynamicDataTemplateSelector: DataTemplateSelector
{
public override DataTemplate
SelectTemplate(object item, DependencyObject container)
{
FrameworkElement element = container as FrameworkElement;
if (element != null && item != null && item is Task)
{
Model model = item as Model;
return element.FindResource(model.DisplayAs + "Template");
}
return null;
}
}
<DataGrid>
<DataGrid.Resources>
<DataTemplate x:Key="TextBoxTemplate">
<TextBox Text="{Binding Value}"/>
</DataTemplate>
<DataTemplate x:Key="CheckBoxTemplate">
<CheckBox IsChecked="{Binding Value}"/>
</DataTemplate>
<DataTemplate x:Key="ComboBoxTemplate">
<ComboBox SelectedItem="{Binding Value}"/>
</DataTemplate>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTemplateColumn Header="RowName">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{DisplayName}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Data"
CellTemplateSelector="{StaticResource DynamicDataTemplateSelector}"/>
<DataGrid.Columns>
<DataGrid/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.