我想在我的 WPF 应用程序中为我的 ListViews 创建一个样式,这使它们看起来更像 Windows 资源管理器 ListView。我坚持的是当列太窄而无法修复文本时出现在网格/详细信息视图中的省略号 (...)。
我知道我可以覆盖每列的单元格模板,并明确设置TextTrimming
模式以在每列的基础上获取省略号。但是,我想要一种可以应用于任何 ListView 以获得相同行为的样式。
我希望能够像这样定义列表视图:
<ListView ItemsSource="{Binding Library}" Style="{StaticResource ExplorerListStyle}">
<ListView.View>
<GridView>
<GridViewColumn Width="90" Header="Title" DisplayMemberBinding="{Binding Title}" />
<GridViewColumn Width="60" Header="Author" DisplayMemberBinding="{Binding Author}" />
</GridView>
</ListView.View>
</ListView>
我还希望能够覆盖某些列的单元格模板,例如设置文本颜色,理想情况下仍然继承TextTrimming
模板中文本的模式。
到目前为止,我设法实现这一目标的唯一方法是显式覆盖 ListView 中的 TextBlock 样式:
<ListView ItemsSource="{Binding Library}">
<ListView.Resources>
<Style TargetType="TextBlock">
<Setter Property="TextTrimming" Value="CharacterEllipsis" />
</Style>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn Width="90" Header="Title" DisplayMemberBinding="{Binding Title}" />
<GridViewColumn Width="60" Header="Author" DisplayMemberBinding="{Binding Author}" />
</GridView>
</ListView.View>
</ListView>
但是,这似乎有点笨拙,据我所知,不可能将其设置为样式。
所以,我正在寻找另一种方法来为GridViewColumn
s 标题和单元格设置 TextTrimming 模式,可以在样式中设置,并且不需要显式CellTemplate
s。
谢谢,
标记