我正在开发一个 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 可以动态调整其子元素的大小以适应可用宽度,并在宽度小于子元素的最小宽度时显示水平滚动条?
预先感谢您的帮助。
您可以使用仅向上缩放的
Viewbox
:
<ScrollViewer HorizontalScrollBarVisibility="Auto">
<Viewbox StretchDirection="UpOnly">
<TextBlock MinWidth="300" .../>
</Viewbox>
</ScrollViewer>