我正在尝试编写一个自定义 WPF/MVVM TreeView 控件,它会在展开父项时自动将(尽可能多的)子项滚动到 View 中。
我找到了这篇文章,WPF TreeView - How to scroll so expanded branch is visible ,但似乎只有当树项实际从 TreeViewItem 派生时才有效。
我的 Tree Item 类只是一个普通的 C# 对象 - 与 Josh Smith 的博客 http://www.codeproject.com/Articles/26288/Simplifying-the-WPF-TreeView-by-Using-the-ViewMode 一致,它们在 Tree Item 类的 IsExpanded 属性 setter 中延迟加载。
进入 OnExpand 事件处理程序,我可以看到原始源是一个 TreeViewItem(由幕后框架创建),它在标题字段中有我的树项对象。此 TreeViewItem 只有 1 个视觉子项,一个网格,而网格又具有 3 个视觉子项,ToggleButton、Border 和 ItemsPresenter。
有没有人提示我如何为我的子项获取相应的可视化组件,然后我可以在其上调用 BringIntoView()?
最佳答案
找到一个非常好的行为,可以将所选项目滚动到 View 中,位于此处:
不幸的是,当项目被扩展时,这并不适用,但可以根据您的具体要求进行修改。如果您需要任何帮助,请告诉我。
http://www.codeproject.com/Articles/28959/Introduction-to-Attached-Behaviors-in-WPF
关于WPF TreeView - 将展开的项目滚动到 View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12371496/