2011-12-21 47 views
8

我想按照它創建的日期將我的項目(圖像)分組到列表框中。然後我就用這個代碼:ListBox Groupstyle display:如何設計組名?

<ListBox.GroupStyle> 
      <GroupStyle /> 
</ListBox.GroupStyle> 

當我嘗試應用一些樣式(即邊境),我得到了顯示的組名。只有邊境 這裏使用分組的我的新的實施日期時間:

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

這是我在我的主窗口ICollectionView:

ICollectionView view = CollectionViewSource.GetDefaultView(CollectedFiles); 
     view.GroupDescriptions.Add(new PropertyGroupDescription("DateCreated", new DateTimeToDateConverter())); 
     view.SortDescriptions.Add(new SortDescription("FileFullName", ListSortDirection.Ascending)); 

注:返回我用DateTimeToDateConverter()轉換器沒有時間的日期。

回答

8

參考: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> 
+0

Wow..great ..真的錯過了那個..非常感謝..現在它的顯示。 – Raf