WPF问题 - treeview ContainerFromItem无法获取TreeViewItem

TreeView中的ContainerFromItem经常用到,这里给出一个场景:

PreviewMouseDown事件判断将要选中的TreeViewItem是否和当前选中项相同,不同时需要执行一断逻辑判断,从而决定是否切换。

示例

树形控件显示可能多级,如下示例中的树形控件:
这里写图片描述

对于第一级,使用ContainerFromItem可以正确获取到相应的TreeViewItem。

这里写图片描述

对于第二级,则无法获取到。

这里写图片描述

解决方案

对于树形控件,每一个TreeViewItem下都有一个ItemsControl,要使用ContainerFromItem获取,只能使用其直接父元素获取,而不能全从根元素获取,StackOverFlow中的说明

替代的解决方案,使用TreeViewItem的后台绑定数据判断是否为某一特定项,即使用willSelectTreeViewItem.DataContext == st.SelectedItem判断。

猜你喜欢

转载自blog.csdn.net/wujingang/article/details/71259267