我希望按照创建日期对ListBox中的项目(图像)进行分组。然后我只使用这段代码:
<ListBox.GroupStyle>
<GroupStyle />
</ListBox.GroupStyle>
但是当我尝试应用某种风格(即边框)时,我没有显示任何组名。只有边框 这是我使用DateTime的新分组实现:
<ListBox.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<Border BorderBrush="Gray" BorderThickness="1" CornerRadius="8">
<TextBlock Text="{Binding Path=DateCreated}" FontWeight="Bold" HorizontalAlignment="Center"/>
</Border>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListBox.GroupStyle>
这是我在MainWindow中的ICollectionView:
ICollectionView view = CollectionViewSource.GetDefaultView(CollectedFiles);
view.GroupDescriptions.Add(new PropertyGroupDescription("DateCreated", new DateTimeToDateConverter()));
view.SortDescriptions.Add(new SortDescription("FileFullName", ListSortDirection.Ascending));
注意:我使用DateTimeToDateConverter()转换器,它返回没有时间的日期。
答案 0 :(得分:11)
参考:http://msdn.microsoft.com/en-us/library/system.windows.controls.groupstyle.headertemplate.aspx
使用GroupDescriptions定义组时,您的视图对象 (一个CollectionViewSource对象或派生自的对象 CollectionView)将每个组包装在CollectionViewGroup对象中。
基本上,当您添加PropertyGroupDescription
WPF时,实际上会生成CollectionViewGroup
。您需要绑定到Name
属性,而不是DateCreated属性(在为您创建的WPF引擎的新CollectionViewGroup上不存在)。
<ListBox.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<Border BorderBrush="Gray" BorderThickness="1" CornerRadius="8">
<TextBlock Text="{Binding Path=Name}" FontWeight="Bold" HorizontalAlignment="Center" />
</Border>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListBox.GroupStyle>