动态资源绑定文本时对TextBlock进行文本修剪



我的TextBlock中存在问题。我在一个类型为String的ResourceDictionary中有一个Resource,它通过DynamicResource绑定到一个TextBlock。

在我的TextBlock上,TextTrimming处于活动状态,但在这个"绑定"上,TextTrimming不起作用。

这是框架中的错误还是我做错了?

这是我的样品:

<Grid Grid.Column="1" HorizontalAlignment="Center" Height="60" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{DynamicResource PART_HeaderString}" VerticalAlignment="Center"  TextTrimming="CharacterEllipsis" Grid.Column="1"/>
</Grid>

和我在资源中的字符串:

<sys:String x:Key="PART_HeaderString">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</sys:String>

有很多方法可以让它发挥作用,但我想知道为什么它不起作用。

您需要约束要应用的TextTrimming的网格宽度TextBlock位于宽度设置为Auto的第二列中,因此它将扩展到控件的实际宽度,即您的情况下的TextBlock。

相反,为第二列设置一些硬编码宽度,比如50或将其设置为*。以便所有3列共享相同的宽度。

<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="50"/> <-- HERE
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

您将看到TextTrimming现在已应用。

最新更新