(Stack-)Panel 内的 ScrollViewer

ScrollViewer inside (Stack-)Panel

我正在与 StackPanel 中的 ScrollViewer 打架。 ScrollViewer 仅显示一个滚动条,具体取决于 StackPanel 的方向,我的理解是 StackPanel 认为在该方向上是无限的。因此,我试图通过将 ScrollViewer 绑定到 StackPanel 的宽度和高度来限制它的大小。当应用程序启动时,它会显示两个滚动条,但它们不会正确调整大小。哪里错了,我该怎么办。

(备注:我知道我可以使用 Grid 而不是 StackPanel 并且 ScrollViewer 的行为符合预期。但是一旦我将该 Grid 放入 StackPanel 中,问题再次出现。)

<Window x:Class="tt_WPF.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="500" Width="500">
<StackPanel x:Name="sp" Orientation="Horizontal">
    <ScrollViewer
        HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" 
        Width="{Binding ElementName=sp, Path=ActualWidth}"
        Height="{Binding ElementName=sp, Path=ActualHeight}">
        <Button Background="LightCoral" Width="500" Height="500">Hey</Button>
    </ScrollViewer>
</StackPanel>

我遇到了同样的问题,我通过切换stackpanel和scrollviewer解决了。

滚动查看器在垂直 StackPanel 中毫无用处。垂直 StackPanel 的高度设置为无穷大,因此 ScrollViewer 具有它想要的所有大小,并且永远不会显示滚动条。您应该切换到 Grid 或 DockPanel。