为WPF Treeview启用滚动

Ron*_*ald 25 wpf treeview scroll

任何人都可以帮我解决如何启用树视图滚动?必须有一个简单的方法,但我不能使它在我的代码中工作.多次尝试失败后,我目前有这样的事情:

        <ScrollViewer CanContentScroll="True">
           <TreeView ...>
           </TreeView>
        </ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

我确实看到了"禁用"滚动条,但是当树视图的音符大于屏幕高度时,不会激活滚动.

Ken*_*art 38

TreeView控件本身包含ScrollViewer在它的模板.您应该能够TreeView在适当的主机内部使用(而不是StackPanel!).

  • 一个`StackPanel`给出它的内容,无论儿童要求的宽度(当方向是水平的)或高度(当方向是垂直的时候).因此,如果你在`StackPanel`中放置一个`TreeView`(或`ListBox`,或其他什么),那么`TreeView`会认为它有足够的高度来显示所有项目而不需要`ScrollBar`.事实上,`TreeView`将被切断,因为你将耗尽屏幕空间.使用`Grid`代替. (29认同)
  • 究竟什么是合适的主持人?我的TreeView DOES位于StackPanel内部. (8认同)

小智 7

TreeView包含一个ScrollViewer,但正如@Carlo所说,TreeView或其容器需要有一个高度.或者,TreeView应该托管在一个容器中,该容器不会为其子项提供无限高度(即我认为是@Kent意义的StackPanel).所以把它放在Grid中,不需要给Grid或TreeView一个明确的高度,你应该得到滚动条.