WPF:ListView 分组合并

  • CollectionViewSource 绑定的是从数据库取出的数据ListBind
  • 以DeptName为分组依据
  •     <Window.Resources>
            <CollectionViewSource x:Key="Data"  Source="{Binding ListBind}">
                <CollectionViewSource.GroupDescriptions>
                    <PropertyGroupDescription PropertyName="DeptName"/>
                </CollectionViewSource.GroupDescriptions>
            </CollectionViewSource>
        </Window.Resources>
  • 以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>
原文地址:https://www.cnblogs.com/YunGy/p/3324614.html