2011-12-21 25 views
8

Tôi muốn nhóm các mục của tôi (hình ảnh) trong một ListBox vào ngày nó được tạo. Sau đó, tôi chỉ cần sử dụng mã này:Hiển thị ListBox Groupstyle: Cách thiết kế tên nhóm?

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

NHƯNG Khi tôi cố gắng áp dụng một số phong cách (nghĩa là Border), tôi nhận được NO tên nhóm hiển thị. ONLY Border Đây thực hiện mới của tôi về các nhóm sử dụng 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> 

Đây là ICollectionView tôi trong MainWindow tôi:

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

LƯU Ý: tôi sử dụng DateTimeToDateConverter() chuyển đổi mà trả về ngày không có thời gian.

Trả lời

8

tham khảo: http://msdn.microsoft.com/en-us/library/system.windows.controls.groupstyle.headertemplate.aspx

Khi bạn xác định các nhóm sử dụng GroupDescriptions, đối tượng xem bạn (một đối tượng CollectionViewSource hoặc một đối tượng mà xuất phát từ CollectionView) bao trùm mỗi nhóm trong một đối tượng CollectionViewGroup.

Về cơ bản, khi bạn thêm PropertyGroupDescription WPF thực sự tạo ra một CollectionViewGroup. Bạn sẽ cần phải liên kết với thuộc tính Name, không phải thuộc tính DateCreated (không tồn tại trên bộ sưu tập mới của CollectionViewGroup mà công cụ WPF đã tạo cho bạn).

<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 .. thực sự nhớ điều đó .. Cảm ơn rất nhiều..để hiển thị. – Raf

Các vấn đề liên quan