8

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

在搜索 WPF 中分组的工作方式后,我发现了 GroupStyles 和 PropertyGroupDescription 类。

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

无论如何,在我的 ItemsControl 的 GroupStyle DataTemplate 中,我可以绑定到返回的对象(即:“元数据”对象),然后按我的意愿显示它的属性吗?还是我被迫绑定到“名称”?

换句话说:

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

2 回答 2

16

默认情况下DataContextGroupStyle您可以绑定到此CollectionViewGroup PropertiesBindingSource但是,当然,如果需要,您可以设置任何其他值。

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

<TextBlock Text="{Binding Path=Items[0].YourStringProperty}" />
于 2012-04-19T19:49:00.160 回答
0

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

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

<DataTemplate>
<TextBlock Text="{Binding XXXXX}"/>
</DataTemplate>
于 2012-04-19T18:56:05.490 回答