【问题标题】:ScrollBar "priority"滚动条“优先级”
【发布时间】:2017-02-18 20:58:23
【问题描述】:

我有一个应用程序,其中主窗口包含四个不同的选项卡。在其中一个选项卡的内容区域中,我有一个包含两列的网格,其中左列包含项目列表,右列包含所选项目的详细视图。必要时,两列均可滚动。

我想在此选项卡上的网格容器中添加 minwidth 和 minheight,这样两列布局就不会过度扭曲。但是,我不想限制 MainWindow,因为用户在查看其他选项卡时可能希望使窗口非常小。

如果我用 ScrollViewer 包裹标签内容区域,内部列将永远不会显示滚动条。是否可以让内部滚动条“优先”,并且仅当宽度/高度低于网格的最小宽度/最小高度时才显示外部 ScrollViewer 上的滚动条?

【问题讨论】:

    标签: wpf xaml


    【解决方案1】:

    如果我用 ScrollViewer 包裹标签内容区域,内部列将永远不会显示滚动条。

    好吧,如果您将外部 ScrollViewer 设置为可垂直滚动,那当然是正确的。所以不要那样做。

    只需将外部 ScrollViewer 设置为仅水平滚动:

    HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled"
    

    并将内部 ScrollViewers 设置为仅垂直滚动:

    HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto"
    

    这是我在 Kaxaml 中证明的快速演示。如果将其设置为小于 500 像素,它将获得一个水平滚动条;但是两个内栏仍然各自有自己的垂直滚动条,并且可以相互独立滚动。

    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
      <UniformGrid Rows="1" Columns="2" MinWidth="500">
        <ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
          <Button Height="650">Column 1</Button>
        </ScrollViewer>
        <ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
          <Button Height="1500">Column 2</Button>
        </ScrollViewer>
      </UniformGrid>
    </ScrollViewer>
    

    【讨论】:

    • 我想同时允许垂直和水平滚动条。我知道如果没有外部垂直滚动条,内部​​列的垂直滚动条将起作用。目标是在 minheight 而不是之前触发外部垂直滚动条,但我不确定这是否可能。
    猜你喜欢
    • 2019-11-25
    • 1970-01-01
    • 2021-08-27
    • 2010-11-14
    • 2011-01-18
    • 2011-07-22
    • 1970-01-01
    • 2011-06-25
    相关资源
    最近更新 更多