如何在WPF TreeView中清除TreeView选项?我已经尝试循环TreeNodes
并清除IsSelected
属性,但这是一个ReadOnly
属性.有任何想法吗?
的TreeView
是使用XML通过绑定XMLDataProvider
对象.
我遇到了完全相同的问题并编写了以下代码,这些代码可以在任何树视图上工作,只需要对第一个函数进行一行调用.
class TomWrightsUtils { public static void ClearTreeViewSelection(TreeView tv) { if (tv != null) ClearTreeViewItemsControlSelection(tv.Items, tv.ItemContainerGenerator); } private static void ClearTreeViewItemsControlSelection(ItemCollection ic, ItemContainerGenerator icg) { if ((ic != null) && (icg != null)) for (int i = 0; i < ic.Count; i++) { TreeViewItem tvi = icg.ContainerFromIndex(i) as TreeViewItem; if (tvi != null) { ClearTreeViewItemsControlSelection(tvi.Items, tvi.ItemContainerGenerator); tvi.IsSelected = false; } } } }
不确定TreeNodes是什么意思.
通常IsSelected
,您的视图模型上会有一个与视图绑定的对应属性:
因此,您只需遍历视图模型中的数据项并进行设置即可IsSelected = false
.
但是,听起来你没有这样的财产.在这种情况下,您需要TreeViewItem
为每个数据项获取相应的数据.有关TreeView.ItemContainerGenerator
如何执行此操作的信息,请参阅酒店.就像是:
var treeViewItem = _treeView.ItemContainerGenerator.ContainerFromIndex(0) as TreeViewItem; treeViewItem.IsSelected = false;