如何在WPF TreeView中清除TreeView选项?我已经尝试循环TreeNodes并清除IsSelected属性,但这是一个ReadOnly属性.有任何想法吗?
的TreeView是使用XML通过绑定XMLDataProvider对象.
小智 11
我遇到了完全相同的问题并编写了以下代码,这些代码可以在任何树视图上工作,只需要对第一个函数进行一行调用.
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;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
不确定TreeNodes是什么意思.
通常IsSelected,您的视图模型上会有一个与视图绑定的对应属性:
<TreeView>
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
Run Code Online (Sandbox Code Playgroud)
因此,您只需遍历视图模型中的数据项并进行设置即可IsSelected = false.
但是,听起来你没有这样的财产.在这种情况下,您需要TreeViewItem为每个数据项获取相应的数据.有关TreeView.ItemContainerGenerator如何执行此操作的信息,请参阅酒店.就像是:
var treeViewItem = _treeView.ItemContainerGenerator.ContainerFromIndex(0) as TreeViewItem;
treeViewItem.IsSelected = false;
Run Code Online (Sandbox Code Playgroud)
小智 5
TreeViewItem tvi = tvMain.ItemContainerGenerator.ContainerFromIndex(0) as TreeViewItem;
if (tvi != null) { tvi.IsSelected = true; tvi.IsSelected = false; }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13847 次 |
| 最近记录: |