WPF - 组样式:我们只能绑定到“名称”属性吗?

时间:2012-04-19 17:10:22

标签: c# .net wpf .net-4.0

我正在尝试创建一个ItemsControl,负责显示按元数据排序的各种项目。每个项目可以有多个元数据。例如,“对话”类型的项目可以具有“章节”,“行动”和“音量”元数据。

在搜索分组如何在WPF中工作时,我发现了GroupStyles和PropertyGroupDescription类。

我创建了自己的类,它继承自PropertyGroupDescription并返回“Metadata”类型的对象。

无论如何,在我的ItemsControl的GroupStyle DataTemplate中,我可以绑定到返回的对象(即:“Metadata”对象),然后按我的意愿显示其属性?或者我被迫绑定到“姓名”?

换句话说:

<ItemsControl.GroupStyle>
    <GroupStyle>
        <GroupStyle.HeaderTemplate>
            <DataTemplate>
                  Am I forced to bind to "Name" here ?
            </DataTemplate>
        </GroupStyle.HeaderTemplate>
    </GroupStyle>
</ItemsControl.GroupStyle>

2 个答案:

答案 0 :(得分:14)

DataContext中的默认GroupStyle您可以绑定到此CollectionViewGroup Properties。但是,如果需要,您当然可以设置任何其他BindingSource

如果您想要群组中的第一个对象使用:

<TextBlock Text="{Binding Path=Items[0].YourStringProperty}" />

答案 1 :(得分:0)

默认情况下,当绑定到自定义对象时,它会尝试使用其ToString()方法显示,而不是名称(好吧,ToString()默认打印名称)。您可以尝试覆盖ToString()方法来打印其他内容,您将看到我的意思。

但是当然你可以定义自己的DataTemplate并绑定到不同的属性。

<DataTemplate>
<TextBlock Text="{Binding XXXXX}"/>
</DataTemplate>