ScrollBar" priority"

时间:2017-02-18 20:58:23

标签: wpf xaml

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

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

如果我使用ScrollViewer包装选项卡内容区域,内部列将永远不会显示滚动条。是否可以使用内部滚动条"优先级"并且当宽度/高度低于网格的最小/最小高度时,只显示外部ScrollViewer上的滚动条?

1 个答案:

答案 0 :(得分:0)

  

如果我使用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>

Screenshot of nested ScrollViewers in different directions