我正在尝试创建一个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>
答案 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>