wpf - 在 ListView 之间共享 GroupStyle
问题描述
有没有办法在 ListViews 之间共享 GroupStyle/Columns 的代码。
我的设置适用于一个 ListView,但由于我想要另外两个相同的样式,我不想复制代码,使文件变得混乱。再加上其中一个 ListView 的更改,可能会忘记复制到另一个。
我知道我可以在 Window.Resources 中使用样式,并且我使它适用于列,但是我无法进行分组。
我有从 ObservableCollection > ListCollectionView > ItemsSource 加载的项目,并在 PowerShell 中绑定,就像一个魅力。
适用于一个 ListView 的 Xaml:
<ListView Grid.Row="1" Name="lvAllFiles">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name" Width="1000"/>
<GridViewColumn DisplayMemberBinding="{Binding Created}" Header="Created" Width="100"/>
<GridViewColumn DisplayMemberBinding="{Binding LastWriteTime}" Header="LastWriteTime" Width="100"/>
</GridView>
</ListView.View>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="ToolTip" Value="{Binding TT}"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border BorderBrush="Gray" BorderThickness="1">
<Expander IsExpanded="True">
<Expander.Header>
<TextBlock Text="{Binding Name}" Foreground="Gray" FontSize="14"/>
</Expander.Header>
<ItemsPresenter/>
</Expander>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
解决方案
使用定义GroupStyle
as 资源x:Key
,例如<Window.Resources>
:
<Window.Resources>
<GroupStyle x:Key="gs">
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border BorderBrush="Gray" BorderThickness="1">
<Expander IsExpanded="True">
<Expander.Header>
<TextBlock Text="{Binding Name}" Foreground="Gray" FontSize="14"/>
</Expander.Header>
<ItemsPresenter/>
</Expander>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</Window.Resources>
然后,您可以像这样引用它:
<ListView Grid.Row="1" Name="lvAllFiles">
...
<ListView.GroupStyle>
<StaticResource ResourceKey="gs" />
</ListView.GroupStyle>
</ListView>
推荐阅读
- python - 在不使用虚拟环境的情况下使用 miniconda/anaconda?
- javascript - 我是否正确嵌套了函数?
- git - 如何告诉 Git Clone 不要运行我的 .bashrc?
- python - 如何从pyserialtransfer的数字列表中重建python中的结构
- css - 定义标题高度
- ios - 如何使用 Firebase 数据创建和填充 SwiftUI 列表?
- c# - 来自列表 C# 的对象自毁
- c - LCM,然后以矩阵形式表示
- regex - Angular 9 - Validators.pattern('^[0-9][0-9][0-9]$') 与 012 等前导 0 数字不匹配
- postgresql - SpringBoot+Kotlin+Postgres 和 JSONB:“org.hibernate.MappingException:没有 JDBC 类型的方言映射”