【问题标题】:ScrollViewer inside (Stack-)PanelScrollViewer inside (Stack-)Panel
【发布时间】: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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我知道,但我想要一个可以在 StackPanel 中使用的控件。
    猜你喜欢
    • 1970-01-01
    • 2013-08-21
    • 2019-10-05
    • 2017-01-31
    • 2021-03-31
    • 2012-09-01
    • 2020-10-03
    • 2015-05-04
    • 2016-08-04
    相关资源
    最近更新 更多