如何实现WPF中相邻两个TextBlock仅截断第一个?
解决WPF双TextBlock自适应截断问题
直接用Grid布局就能实现,关键是给第一个TextBlock加HorizontalAlignment="Left",具体代码如下:
<Grid HorizontalAlignment="Stretch"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <TextBlock Grid.Column="0" Text="这里放需要截断的长文本内容" TextTrimming="CharacterEllipsis" HorizontalAlignment="Left"/> <TextBlock Grid.Column="1" Text="固定显示的第二个文本" Margin="8,0,0,0"/> </Grid>
原理说明:
- 第一列设为
*,用来分配父容器减去第二列后的剩余空间;第二列设为Auto,自适应第二个TextBlock的宽度。 - 给第一个TextBlock设置
HorizontalAlignment="Left",避免它在空间充足时拉伸占满整列,这样第二个TextBlock会紧跟在第一个后面。 - 当父容器宽度变窄,第一列的可用空间不足以容纳第一个TextBlock的完整文本时,
TextTrimming="CharacterEllipsis"就会触发,自动截断显示省略号,第二个TextBlock始终保持完整显示。
内容的提问来源于stack exchange,提问作者monadoboi
相关产品推荐
相关产品推荐

