You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止带CharacterEllipsis的TextBlock扩展Auto宽度的Grid列

解决方案:无需绑定实现文本截断限制

要实现第一行主文本完整显示,第二行次要文本宽度不超过第一行、过长自动截断的需求,不用绑定ActualWidth的话,可以通过调整容器布局来实现,以下是两种简洁的方案:

方案一:使用StackPanel

StackPanel设置HorizontalAlignment="Left"后,自身宽度会由内部第一行文本的宽度决定,第二行文本的可用空间被限制在这个宽度内,触发TextTrimming截断:

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <StackPanel VerticalAlignment="Top" HorizontalAlignment="Left">
        <TextBlock Text="Hello World"/>
        <TextBlock Text="Hello ABC DEF World" TextTrimming="CharacterEllipsis"/>
    </StackPanel>
</Window>

方案二:使用DockPanel

同样将DockPanel的HorizontalAlignment设为Left,让容器宽度由第一个停靠的文本决定,第二行文本自然被限制在该宽度内:

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <DockPanel HorizontalAlignment="Left">
        <TextBlock DockPanel.Dock="Top" Text="Hello World"/>
        <TextBlock DockPanel.Dock="Top" Text="Hello ABC DEF World" TextTrimming="CharacterEllipsis"/>
    </DockPanel>
</Window>

核心逻辑都是让容器的宽度由第一行文本主导,从而限制第二行文本的可用宽度,无需依赖绑定就能实现截断效果。

内容的提问来源于stack exchange,提问作者Rand Random

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:30:52