【发布时间】:2015-03-24 00:18:40
【问题描述】:
我在 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 试图最小化它自己的大小。您希望您的元素填充面板。不要与 StackPanel 抗争,选择一个真正能满足您需求的面板。也许是 DockPanel。
标签: wpf