我遇到一个问题,即TreeView中的节点有如此多的子节点,以至于无法在屏幕上同时显示所有节点。在右侧,我有一个整个树视图的滚动条。但是当我向下滚动时,它会将树视图移动到下一个节点 - 而不是子节点。这意味着永远不会显示可见区域之外的那些子节点。我想知道是否可以添加一个额外的滚动条,该滚动条仅用于滚动节点的子节点。只有当一个节点的子节点数量超过可以在屏幕上显示的子节点时才会出现。
答案 0 :(得分:2)
听起来我需要看看ScrollViewer.CanContentScroll
Property。从链接页面:
ScrollViewer中的内容可以按物理单位或逻辑单位滚动。物理单位是与设备无关的像素。逻辑单元用于滚动ItemsControl中的项目。 ScrollViewer的默认行为是使用物理单位滚动其内容。但是,如果CanContentScroll设置为true,则内容可以使用逻辑单元进行滚动。例如,ListBox,ListView和从ItemsControl继承的其他控件使用逻辑单元进行滚动。如果CanContentScroll为true,则ExtentHeight,ScrollableHeight,ViewportHeight和VerticalOffset属性的值是项目数,而不是物理单位。
如果需要物理滚动而不是逻辑滚动,请将主机Panel元素包装在ScrollViewer中,并将其CanContentScroll属性设置为false。物理滚动是大多数Panel元素的默认滚动行为。
因此,只需尝试将ScrollViewer.CanContentScroll="False"
添加到TreeView
的声明中。