ListBox Groupstyle显示:如何设计组名?

Raf*_*Raf 10 .net c# xaml

我想按照创建日期将列表框中的项目(图像)分组.然后我只使用这段代码:

<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)