WPF,ListView设置分组

CollectionViewSource 绑定的是从数据库取出的数据ListBind以DeptName为分组依据

<Window.Resources> <CollectionViewSource x:Key="Data" Source="{Binding ListBind} </Window.Resources>

正文


CollectionViewSource 绑定的是从数据库取出的数据ListBind
以DeptName为分组依据
    <Window.Resources>
        <CollectionViewSource x:Key="Data"  Source="{Binding ListBind}">
            <CollectionViewSource.GroupDescriptions>
                <PropertyGroupDescription PropertyName="DeptName"/>
            </CollectionViewSource.GroupDescriptions>
        </CollectionViewSource>
    </Window.Resources>
 
分组字段也可以在后台中定义
CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(lvItemsCategory.ItemsSource);
    PropertyGroupDescription groupDescription = new PropertyGroupDescription("CategoryType")
"CategoryType"是要绑定的字段名
    view.GroupDescriptions.Add(groupDescription);

以DeptName为分组依据,扩展列头显示科室名称DeptName,
TextBlock绑定的数据为DeptName的Name,而不是Text="{Binding Path=DeptName}"

<ListView Name="list_Reg"  ItemsSource="{Binding Source={StaticResource Data}}" Style="{StaticResource ListViewStyle}">
                <!--分组合并style-->
                <ListView.GroupStyle>
                    <GroupStyle>
                        <GroupStyle.ContainerStyle>
                            <Style TargetType="{x:Type GroupItem}">
                                <Setter Property="Margin" Value="0,0,0,5"/>
                                <Setter Property="Template">
                                    <Setter.Value>
                                        <ControlTemplate TargetType="{x:Type GroupItem}">
                                            <Expander IsExpanded="True" BorderBrush="#FF1975A0" BorderThickness="2">
                                                <Expander.Header>
                                                    <DockPanel>
                                                        <TextBlock FontWeight="Bold" Text="{Binding Path=Name}" 
                                                               Margin="5,0,0,0" Width="auto"/>
</DockPanel> </Expander.Header> <Expander.Content> <ItemsPresenter/> </Expander.Content> </Expander> </ControlTemplate> </Setter.Value> </Setter> </Style> </GroupStyle.ContainerStyle> </GroupStyle> </ListView.GroupStyle>

后来看到xml的分组

http://www.cnblogs.com/liuyazhou/archive/2009/09/10/1563886.html

<Window.Resources>
        <XmlDataProvider x:Key="OKData" XPath="/Info">
            <x:XData>
                <Info xmlns="">
                    <Item ID="12345" Name="Book1" Price="$32.05" Author="author1" Catalog="Business"/>
                    <Item ID="23456" Name="Book2" Price="$32.05" Author="author2" Catalog="Language"/>
                    <Item ID="34567" Name="Book3" Price="$32.05" Author="author3" Catalog="Business"/>
                    <Item ID="67891" Name="Book4" Price="$32.05" Author="author4" Catalog="Business"/>
                    <Item ID="78910" Name="Book5" Price="$32.05" Author="author5" Catalog="Language"/>
                    <Item ID="89101" Name="Book6" Price="$32.05" Author="author6" Catalog="Business"/>
                    <Item ID="91011" Name="Book7" Price="$32.05" Author="author7" Catalog="Business"/>
                    <Item ID="10111" Name="Book8" Price="$32.05" Author="author8" Catalog="Business"/>                 
                </Info>
            </x:XData>
        </XmlDataProvider>
        <CollectionViewSource
            x:Key='src' Source="{Binding Source={StaticResource OKData},XPath=Item}">
            
            <CollectionViewSource.GroupDescriptions>
                <PropertyGroupDescription PropertyName="@Catalog"/>
            </CollectionViewSource.GroupDescriptions>
        </CollectionViewSource>
    </Window.Resources>
    
    <Grid>
        <ListView Name="listViewTask" ItemsSource='{Binding Source={StaticResource src}}'
                  BorderThickness="0" SelectionChanged="listViewTask_SelectionChanged" >
            <ListView.GroupStyle>
                <GroupStyle>
                    <GroupStyle.ContainerStyle>
                        <Style TargetType="{x:Type GroupItem}">
                            <Setter Property="Margin" Value="0,0,0,5"/>
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="{x:Type GroupItem}">
                                        
                                        <Expander IsExpanded="True" BorderBrush="Red" BorderThickness="2">
                                            <Expander.Header>
                                                <DockPanel>
                                                    <TextBlock FontWeight="Bold" Text="{Binding Path=Name}"
                                                               Margin="5,0,0,0" Width="100"/>
                                                    <TextBlock FontWeight="Bold" Text="{Binding Path=ItemCount}"/>
                                                </DockPanel>
                                            </Expander.Header>
                                            <Expander.Content>
                                                <ItemsPresenter/>
                                            </Expander.Content>
                                        </Expander>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </GroupStyle.ContainerStyle>
                </GroupStyle>
            </ListView.GroupStyle>
            
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="ID" DisplayMemberBinding="{Binding XPath=@ID}" Width="100"/>
                    <GridViewColumn Header="Name" DisplayMemberBinding="{Binding XPath=@Name}" Width="140"/>
                    <GridViewColumn Header="Price" DisplayMemberBinding="{Binding XPath=@Price}" Width="100"/>
                    <GridViewColumn Header="Author" DisplayMemberBinding="{Binding XPath=@Author}" Width="140"/>
                </GridView>
            </ListView.View>
        </ListView>
原文链接: 
http://www.cto800.com/view/11971092829688260658.html 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值