如何在比例网格内剪辑文本块?

How to clip textblock inside proportional grid?

在 ListBox 内的 UserControl 中,我在 Grid 内有一个具有比例宽度 (Width="*") 的 TextBlock,我想采用网格的剩余宽度,但每当我调整 ListBox 的大小时到可以剪辑该 TextBlock 内容的大小,我得到一个滚动条。我怎样才能剪裁 TextBlock 宽度,这样我就不会得到水平滚动条?理想情况下用省略号剪掉它。

编辑:忘记提及 ListBox。

列表框正在滚动,因为它的默认行为是 HorizontalScrollBarVisibilityAuto

尝试将此 属性 设置为禁用:

<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled">

至于剪裁成椭圆,这就比较复杂了。您可以使用 Clip 属性:

很容易地剪辑到省略号
            <TextBlock Text="Some very long thing that I'm putting in here to clip" Background="Blue">
                <TextBlock.Clip>
                    <EllipseGeometry Center="100,8" RadiusX="100" RadiusY="8" />
                </TextBlock.Clip>
            </TextBlock>

但是,要保持 Center、RadiusX 和 RadiusY 的顺序,您必须将其绑定到文本框的高度和宽度(可能使用转换器将这些值减半)。