2011-12-21 3 views
8

アイテム(画像)を作成した日付でリストボックスにグループ化したいと考えています。その後、私はこのコードを使用:私はいくつかのスタイル(すなわち境界線)を適用しようとするとListBoxグループスタイルの表示:グループ名のデザイン方法は?

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

しかしは、私が表示されたグループ名を得ませんでした。日時を使用してグループのONLYここでボーダー 私の新しい実装:ここ

<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

参考:あなたはGroupDescriptionsを使用してグループを定義する場合http://msdn.microsoft.com/en-us/library/system.windows.controls.groupstyle.headertemplate.aspx

、ビュー・オブジェクト (CollectionViewSourceオブジェクトまたは CollectionViewから派生したオブジェクト)がCollectionViewGroupオブジェクト内の各グループをラップします。

基本的に、PropertyGroupDescriptionを追加すると、実際には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

ワウ..本当にそれを逃してください。 – Raf

関連する問題