我有一个CollectionViewSource,它由ObservableCollection中的Created proprty分组。分组在列表框中工作,但我无法获取标题文本以显示创建日期。
CollectionViewSource如下:
<Window.Resources>
<CollectionViewSource x:Key="TaskListColSource" Source="{Binding Path=TaskItems}">
<CollectionViewSource.SortDescriptions>
<componentModel:SortDescription PropertyName="Created" />
</CollectionViewSource.SortDescriptions>
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Created" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</Window.Resources>
我的列表框GroupStyle如下:
<ListBox.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Foreground" Value="White" />
<Setter Property="Focusable" Value="False"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander IsExpanded="True" Foreground="White">
<Expander.HeaderTemplate>
<DataTemplate DataType="{x:Type models:TaskItem}">
<TextBlock x:Name="asdf" Text="{Binding Created}" Foreground="White"/>
</DataTemplate>
</Expander.HeaderTemplate>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListBox.GroupStyle>
有人可以帮我在相关的文本块中显示创建的日期吗?
我按以下方式绑定列表框:
<ListBox x:Name="TaskListBox" ItemsSource="{Binding Source={StaticResource TaskListColSource}}">
答案 0 :(得分:0)
您需要为此扩展程序设置Header
,如下所示:
<Expander IsExpanded="True" Foreground="White"
Header="{Binding}">
</Expander>
每个DataContext
中的隐式GroupItem
是每个数据项。因此Header
应设置为每个数据项(通过{Binding}
)。 HeaderTemplate
隐含DataContext
作为其Header
,但您尚未为其指定任何内容。
修改强>:
如果你想要一些StringFormat,为什么不在TextBlock
内设置它(让Header
保持不变):
<TextBlock x:Name="asdf" Text="{Binding Created, StringFormat=dd MMM yy, ConverterCulture=en-GB}" Foreground="White"/>