gpt4 book ai didi

wpf - 在 DataGrid 的单元格中设置 TextTrimming (CharacterEllipsis)

转载 作者:行者123 更新时间:2023-12-04 14:47:57 30 4
gpt4 key购买 nike

我想将 TextTrimming 属性(CharacterEllipsis)应用于 WPF DataGrid 单元格中的文本。

DataGrid cells without TextTrimming set

我应用了自定义 DataGridCell 模板,如 this answer (下面的代码)并且它运行良好,除了像图片中的第一个超链接列),它们现在是空的。

TextTrimming set on text columns, but hyperling column contents missing

<Style TargetType="DataGridCell">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border Padding="3" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}">
<ContentPresenter.ContentTemplate>
<DataTemplate>
<TextBlock TextTrimming="CharacterEllipsis" Text="{Binding Text}"/>
</DataTemplate>
</ContentPresenter.ContentTemplate>
</ContentPresenter>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

我可以在可视化树中看到两种列类型的差异:
Datagrid row in visual tree (when no custom template is applied)

但不明白我如何使用此信息将 TextTrimming 应用于两种类型的 TextBlock 列。谢谢你的时间 ;)

最佳答案

我最终得到了以下解决方案(更像是一种解决方法,但效果很好):

1) 我分配了一个 x: key 到有问题的样式并将其应用为 CellStyle 到所有 DataGridTextColumns,只要它们不适合,就应该修剪和省略其内容

2) 在 中的 DataGridHyperlinkColumns 中应用省略号修剪App.xaml 我添加了以下样式:

<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextTrimming" Value="CharacterEllipsis"></Setter>
</Style>

这将适用于所有隐式生成的 TextBlocks(如 CodeNaked's answer 中所述)。这似乎有点矫枉过正,但我​​看不出渲染性能有多大差异,现在超链接已按预期修剪。

关于wpf - 在 DataGrid 的单元格中设置 TextTrimming (CharacterEllipsis),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11850217/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com