WPF C#不同类型的DataGrid绑定列表

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

将列表绑定到DataGrid时出现问题

我想要的是有一个列,展示不同的类型,例如:

[物业1][String]

[物业2][bool]

[物业3][枚举]

我的实现如下所示:

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>