zoukankan      html  css  js  c++  java
  • WPF ListView 分组 Grouping

    在Resource里定义数据源和分组字段:

    <CollectionViewSource x:Key="listData" Source="{Binding CategoryItemsView}">
                <CollectionViewSource.GroupDescriptions>
                    <PropertyGroupDescription PropertyName="CategoryType"></PropertyGroupDescription>
                </CollectionViewSource.GroupDescriptions>
            </CollectionViewSource>

    分组字段也可以在Loaded事件中用代码定义:

            private void FileManageCard_Loaded(object sender, RoutedEventArgs e)
            {
                CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(lvItemsCategory.ItemsSource);
                PropertyGroupDescription groupDescription = new PropertyGroupDescription("CategoryType");
                view.GroupDescriptions.Add(groupDescription);
            }

    然后

    <ListView Grid.Row="0"
                            x:Name="lvItemsCategory"
                            ItemsSource="{Binding Source={StaticResource listData}}"
                            Style="{StaticResource FileManagerListViewStyle}"
                            ItemContainerStyle="{StaticResource FileManagerListViewItemStyle}"
                            SelectionMode="Single">
                            <ListView.GroupStyle>
                                <GroupStyle>
                                    <GroupStyle.HeaderTemplate>
                                        <DataTemplate>
                                            <StackPanel Orientation="Horizontal" Background="Transparent" Height="35">
                                                <TextBlock Text="{Binding Name}" FontSize="18" FontWeight="Bold" Foreground="Gray"/>
                                            </StackPanel>
                                        </DataTemplate>
                                    </GroupStyle.HeaderTemplate>
                                </GroupStyle>
                            </ListView.GroupStyle>
                        </ListView>

    最后附上Style和ItemContainerStyle:

        <Style x:Key="FileManagerListViewStyle" TargetType="{x:Type ListView}">
            <Setter Property="VerticalAlignment" Value="Top"></Setter>
            <Setter Property="HorizontalAlignment" Value="Stretch"></Setter>
            <Setter Property="AllowDrop" Value="{Binding IsAllowDrop}"></Setter>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ListView}">
                        <ScrollViewer VerticalScrollBarVisibility="Hidden" HorizontalAlignment="Stretch">
                            <ItemsPresenter/>
                        </ScrollViewer>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    
        <Style x:Key="FileManagerListViewItemStyle" TargetType="{x:Type ListViewItem}">
            <Setter Property="HorizontalAlignment" Value="Stretch"></Setter>
            <Setter Property="Cursor" Value="Hand"></Setter>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ListViewItem}">
                        <Border x:Name="back" Background="Transparent" Margin="0,0,0,0" Height="25">
                            <Grid Margin="20,0,0,0">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="30"/>
                                    <ColumnDefinition Width="*"/>
                                </Grid.ColumnDefinitions>
                                <Image  Grid.Column="0"
                                    HorizontalAlignment="Center"
                                    VerticalAlignment="Center"
                                    Width="20"
                                    Height="20"
                                    Source="{Binding Icon,Converter={StaticResource ImgPathToImageConverter}}"/>
                                <DockPanel Grid.Column="1">
                                    <TextBlock Text="{Binding DisplayName}"
                                        Height="25"
                                        Foreground="#FF6D6D6D"
                                        FontSize="16"/>
                                    <TextBlock Text="{Binding Count,StringFormat=' ({0})'}"
                                        Foreground="#FF6D6D6D"
                                        FontSize="16"></TextBlock>
                                </DockPanel>
                            </Grid>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="back" Property="Background" Value="LightGray"></Setter>
                            </Trigger>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter TargetName="back" Property="Background" Value="Black"></Setter>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
  • 相关阅读:
    LeetCode Trapping Rain Water
    [Elasticsearch] 部分匹配 (四)
    SPOJ VLATTICE Visible Lattice Points (莫比乌斯反演基础题)
    SICP 习题 (1.35)解题总结
    光流(optical flow)和openCV中实现
    LZMA C# SDK 结合 UPK 打包压缩 多目录 Unity3d实例
    tabhost实现android菜单切换
    12306火车票订票失败!您的身份信息未经核验,一般人是不能订票的,我订了,可是没成功。。。
    WebService学习之旅(四)Apache Axis2的安装
    WebService学习之旅(三)JAX-WS与Spring整合发布WebService
  • 原文地址:https://www.cnblogs.com/lopengye/p/7215815.html
Copyright © 2011-2022 走看看