【发布时间】:2022-01-16 19:56:54
【问题描述】:
我有一个带有滚动查看器的树视图。当树视图变得充满树节点时,我希望滚动条出现。但无论树视图有多大,它都不会出现。树视图在窗口外生长,但不会限制在窗口内。
目前的结构是: MainWindow 包含一个显示页面的 Frame,该页面包含一个用户控件,该用户控件包含一个树视图。
用户控件设置为“拉伸”,但不是拉伸以适应其父级(限制空间并因此显示滚动条),而是拉伸以适应其所有子级(从而拉伸到屏幕外)。
我将如何继续将“自动”大小限制为它的父级,而不是让它显示所有子级?
How i would like it to look/work like
How it actually looks/works like
代码,有点无关紧要,我只是想知道我应该如何应用滚动视图:
主窗口:
<Frame Source="View/Pages/StartPage.xaml" x:Name="MainFrame" NavigationUIVisibility="Hidden"/>
</DockPanel>
主页:
<Grid>
<Frame Source="ParamFrameV.xaml" x:Name="pageFrame" HorizontalAlignment="Center" VerticalAlignment="Stretch"/>
ParamFrameV(用户控件):
<Grid>
<ScrollViewer VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Disabled" VerticalAlignment="Top" MaxHeight="I WANNA LIMIT HEIGHT SO THAT IT WONT GO OFF SCREEN" Width="283">
<TreeView ItemsSource="{Binding Nodes}" ItemContainerStyle="{StaticResource TreeViewItemExpandedStyle}">
//irrelevant code for this question
</TreeView>
</ScrollViewer>
【问题讨论】:
-
如果你设置或绑定
Frame.Height那么一切都应该工作。 -
您基本上要做的是隐藏树视图的原始滚动查看器并添加一个单独的滚动查看器来替换树视图。有两种方法可以在代码中执行此操作,因为纯 xaml 不支持绑定滚动索引或类似的 stackoverflow.com/questions/15151974/… 或为树视图项提供填充,从而产生滚动查看器一直移动到树视图之外的错觉
-
Rekshino) 绑定到什么?我不确定你是什么意思。 Denis)嗯,但我无法让滚动查看器在树视图上工作。即使在执行以下操作时:“
”它也不起作用。滚动条显示但灰显,无论树视图中有多少项目,滚动条都不起作用。树视图仍然在窗口之外增长,而不是将其大小限制为父容器。父容器与树视图/滚动视图的行为无关 -
我写下了一个有点像你正在尝试做的事情的问题,看看这是否有帮助。我简化了您的代码,并使其成为一个最小的可重现示例,因为我的 ofc 没有您的自定义控件和 itemoruces
标签: wpf treeview scrollview scrollbar