首页 > 教程 > WPF Samples中的分组示例

WPF Samples中的分组示例

时间:2024-06-17 | 来源: | 阅读:124

话题: S C

WPF Samples中的示例 在WPF Samples中有一个关于Grouping的Demo。 该Demo结构如下: MainWindow.xaml如下: <Window x:Class="Grouping.MainWindow" xmlns="http://s

WPF Samples中有一个名为Grouping的演示示例。这个演示示例的结构如下:

MainWindow.xaml的代码如下:

http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Grouping"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525" SizeToContent="Height">
    
        ...(部分代码省略)...
    

其中,使用了XmlDataProvider来加载和绑定XML数据:

 
            
                
                    
                        
                            Pick up Groceries and Detergent
                        
                        
                            Do Laundry
                        
                        ...(其余XML数据省略)...
                    
                
            
        

接着,将MyTasks绑定到ItemsControl:

 

设置数据模板:

 
                    
                        
                    
                    ...(部分代码省略)...
                

关于本次介绍的主题Grouping有关的内容如下:

 
    
         
             
                   
              
          
     
 

ItemsControl.GroupStyle 获取定义每个级别的组的外观的GroupStyle对象集合。

GroupStyle 的结构如下:

    public class GroupStyle : INotifyPropertyChanged
    {
       ...(部分代码省略)...
    }

这里设置了 GroupStyle.HeaderTemplate ,这个元素定义了分组头的数据模板。数据模板决定了分组头的具体显示方式。

CollectionViewGroup 类表示根据GroupDescriptions由CollectionView对象创建的组。

MainWindow.cs如下:

 public partial class MainWindow : Window
 {
     ...(部分代码省略)...
 }

只包含两个事件处理程序。

进行分组的代码如下:

 private void AddGrouping(object sender, RoutedEventArgs e)
     {
         ...(部分代码省略)...
     }

_myView = (CollectionView) CollectionViewSource.GetDefaultView(myItemsControl.ItemsSource); 用于获取与特定数据源关联的默认视图。

接着, PropertyGroupDescription 类描述使用属性名作为条件对项进行分组。

取消分组将 _myView.GroupDescriptions 清空即可。

该Demo的效果如下:

分组前:

分组后:

代码来源

[WPF-Samples/Data Binding/Grouping at main · microsoft/WPF-Samples (github.com)]

欢迎关注微信公众号:DotNet学习交流。


湘ICP备2022002427号-10湘公网安备:43070202000427号
© 2013~2019 haote.com 好特网