我想按照创建日期将列表框中的项目(图像)分组.然后我只使用这段代码:
<ListBox.GroupStyle>
<GroupStyle />
</ListBox.GroupStyle>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试应用某种风格(即边框)时,我没有显示任何组名.只有Border 在这里我使用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>
Run Code Online (Sandbox Code Playgroud)
这是我在MainWindow中的ICollectionView:
ICollectionView view = CollectionViewSource.GetDefaultView(CollectedFiles);
view.GroupDescriptions.Add(new PropertyGroupDescription("DateCreated", new DateTimeToDateConverter()));
view.SortDescriptions.Add(new SortDescription("FileFullName", ListSortDirection.Ascending));
Run Code Online (Sandbox Code Playgroud)
注意:我使用DateTimeToDateConverter()转换器,它返回日期没有时间.
m-y*_*m-y 12
参考:http://msdn.microsoft.com/en-us/library/system.windows.controls.groupstyle.headertemplate.aspx
使用GroupDescriptions定义组时,视图对象(CollectionViewSource对象或从CollectionView派生的对象 )将每个组包装在CollectionViewGroup对象中.
基本上,当你添加一个PropertyGroupDescriptionWPF实际上生成一个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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9307 次 |
| 最近记录: |