WPF C#不同类型的DataGrid绑定列表
将列表绑定到DataGrid时出现问题 我想要的是有一个列,展示不同的类型,例如: [物业1][String] [物业2][bool] [物业3][枚举] 我的实现如下所示:WPF C#不同类型的DataGrid绑定列表,c#,wpf,binding,types,datagrid,C#,Wpf,Binding,Types,Datagrid,将列表绑定到DataGrid时出现问题 我想要的是有一个列,展示不同的类型,例如: [物业1][String] [物业2][bool] [物业3][枚举] 我的实现如下所示: public interface IPropertyItem { } public class PropertyItem<T> : IPropertyItem { public String Name { get; set; } public T Value { get; set; } }
public interface IPropertyItem
{
}
public class PropertyItem<T> : IPropertyItem
{
public String Name { get; set; }
public T Value { get; set; }
}
现在的问题是,第2列中的所有单元格都将不同的数据类型表示为文本
但我想要的是有一个布尔值的复选框,枚举值的组合框等等
我真的非常感谢你在这方面的帮助。这个问题已经困扰了好几天了
谢谢大家!
--更新--
添加DataTemplateSelector解决了这个问题。您可以使用它来定义单元格模板。它的属性有助于定义多个模板,并根据内容类型使用一个模板。为此,您必须编写自定义的DataTemplateSelector
,但它非常简单。所以您需要
例如:
<local:DynamicTemplateSelector x:Key="MyTemplateSelector" />
<DataTemplate x:Key="StringTemplate">
<TextBlock>
<Run Text="String: " />
<Run Text="{Binding}" />
</TextBlock>
您可以按照以下步骤进行操作 1) 您需要为集合中的每个类型定义数据模板。
2) 您可以根据类型在DataTrigger中分配模板,也可以使用
希望能有所帮助。DataTemplateSelector正是我想要的!非常感谢你的帮助!
dataGrid.ItemsSource = PropertyList;
<local:DynamicTemplateSelector x:Key="MyTemplateSelector" />
<DataTemplate x:Key="StringTemplate">
<TextBlock>
<Run Text="String: " />
<Run Text="{Binding}" />
</TextBlock>
<DataTemplate x:Key="Int32Template">
<TextBlock>
<Run Text="Int32: " />
<Run Text="{Binding}" />
</TextBlock>
<Style x:Key="MyListStyle" TargetType="ListView">
<Setter Property="ItemTemplateSelector" Value="{StaticResource MyTemplateSelector}"/>
<Setter Property="local:DynamicTemplateSelector.Templates">
<Setter.Value>
<local:Templates>
<local:Template Value={x:Type String} DataTemplate={StaticResource StringTemplate}/>
<local:Template Value={x:Type Int32} DataTemplate={StaticResource Int32Template}/>
</local:Templates>
</Setter.Value>
</Setter>