在WPF中创建一个自定义ScrollViewer,它可以正常调整元素大小,并在子宽度小于其最小值时显示水平滚动条?

问题描述 投票:0回答:1

我正在开发一个 WPF 应用程序,我需要创建一个自定义 ScrollViewer,它可以根据可用宽度自动调整其子元素的大小。此外,当子元素的最小宽度小于某个限制时,我希望 ScrollViewer 显示水平滚动条以允许用户水平滚动。

<ScrollViewer HorizontalScrollBarVisibility="Auto">
    <TextBlock
        MinWidth="300" 
        Text="Some random text that can take ScrollViewer's width. It can wrap. But cannot go less than 300 width." 
        TextWrapping="Wrap"/>
</ScrollViewer>

请注意,大多数

Content
不会有指定的“
MinimumWidth
”。我需要计算它被剪裁的内容的
MimimumWidth
(在我的窗口范围之外)

我尝试使用标准 ScrollViewer,但它不会调整子元素的大小以适应“自动”模式下的可用宽度。我还尝试创建一个继承自 ScrollViewer 并覆盖其行为的自定义控件,但我正在努力实现所需的功能。

有人可以提供有关如何创建自定义 ScrollViewer 的指导或代码示例吗?该 ScrollViewer 可以动态调整其子元素的大小以适应可用宽度,并在宽度小于子元素的最小宽度时显示水平滚动条?

预先感谢您的帮助。

c# wpf wpf-controls horizontal-scrolling scrollviewer
1个回答
0
投票

您可以使用仅向上缩放的

Viewbox

<ScrollViewer HorizontalScrollBarVisibility="Auto">
    <Viewbox StretchDirection="UpOnly">
        <TextBlock MinWidth="300" .../>
    </Viewbox>
</ScrollViewer>
© www.soinside.com 2019 - 2024. All rights reserved.