zoukankan      html  css  js  c++  java
  • 使用CollectionViewSource,通过Xaml绑定自动排序

    这个是一个完成分组和排序功能的Datagrid,同样只是简单的绑定到List集合,后台不用额外的代码,所有功能都在Xaml中完成:

    首先在UI中定义CollectionViewSource资源,在这里定义排序和分组的规则

    WPF中定义如下:

     

    引入命名空间:xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
    1. <Window.Resources>  
    2.     <CollectionViewSource x:Key="ProductsGroup" Source="{Binding Products}"
    3. <- 分组描述-> 
    4.       <CollectionViewSource.GroupDescriptions>  
    5.         <PropertyGroupDescription PropertyName="ProductDate" />  
    6.       </CollectionViewSource.GroupDescriptions
    7. <--排序描述--> 
    8.       <CollectionViewSource.SortDescriptions>  
    9.         <scm:SortDescription PropertyName="ProductDate" Direction="Descending" />  
    10.         <scm:SortDescription PropertyName="ID" Direction="Ascending" />  
    11.       </CollectionViewSource.SortDescriptions>  
    12.     </CollectionViewSource>  
    13.   </Window.Resources>  
    14.   
    15. ...  
    16. ...  
    17.   
    18. <DataGrid DataContext="{StaticResource ProductsGroup}" AutoGenerateColumns="False"    
    19.                 ItemsSource="{Binding}" SelectedItem="{Binding SelectedProduct}" CanUserAddRows="False">  
    20.         <DataGrid.GroupStyle>  
    21.           <GroupStyle>  
    22.             <GroupStyle.HeaderTemplate>  
    23.               <DataTemplate>  
    24.                 <TextBlock  x:Name="txt"  Background="LightBlue" FontWeight="Bold"   
    25.                             Foreground="White" Margin="1" Padding="4,2,0,2"   
    26.                             Text="{Binding Name,StringFormat='生产日期:/{0/}'}" />  
    27.               </DataTemplate>  
    28.             </GroupStyle.HeaderTemplate>  
    29.           </GroupStyle>  
    30.         </DataGrid.GroupStyle>  
    31.         <DataGrid.Columns>  
    32.           <DataGridTextColumn Binding="{Binding ID}" Header="编号" />  
    33.           <DataGridTextColumn Binding="{Binding Name}" Header="名称" />  
    34.           <DataGridTextColumn Binding="{Binding Desc}" Header="说明" />  
    35.         </DataGrid.Columns>  
    36.       </DataGrid>  

     

    SL中定义如下:

     

    1. <UserControl.Resources>  
    2.     <CollectionViewSource x:Key="ProductsGroup" Source="{Binding Products}">  
    3.         <CollectionViewSource.GroupDescriptions>  
    4.             <PropertyGroupDescription PropertyName="ProductDate" />  
    5.         </CollectionViewSource.GroupDescriptions>  
    6.         <CollectionViewSource.SortDescriptions>  
    7.             <scm:SortDescription PropertyName="ProductDate" Direction="Descending" />  
    8.             <scm:SortDescription PropertyName="ID" Direction="Ascending" />  
    9.         </CollectionViewSource.SortDescriptions>  
    10.     </CollectionViewSource>  
    11.   </UserControl.Resources>  
    12.   
    13. ...  
    14. ...  
    15.   
    16. <sdk:DataGrid DataContext="{StaticResource ProductsGroup}" AutoGenerateColumns="False"    
    17.                 ItemsSource="{Binding}" SelectedItem="{Binding SelectedProduct}" Width="300" >  
    18.         <sdk:DataGrid.Columns>  
    19.             <sdk:DataGridTextColumn Binding="{Binding ID}" Header="编号" />  
    20.             <sdk:DataGridTextColumn Binding="{Binding Name}" Header="名称" />  
    21.             <sdk:DataGridTextColumn Binding="{Binding Desc}" Header="说明" />  
    22.         </sdk:DataGrid.Columns>  
    23.       </sdk:DataGrid>  
  • 相关阅读:
    SQL Server 存储过程
    FindControl的详细介绍
    Transaction-SQL 游标
    硬盘安装工具nt6 hdd installer无法卸载的问题
    Some question about Source Tree
    java 简单加密
    java 多态与多重继承
    构造方法和方法的重载
    64位WIN7上安装11G R2 ,PLSQL的配置方法
    语录(排名不分先后)
  • 原文地址:https://www.cnblogs.com/fuchongjundream/p/3873365.html
Copyright © 2011-2022 走看看