2
A
回答
5
这里是一个方法,将检索TreeView中的所有TreeViewItems。请注意,这是一个非常昂贵的运行方法,因为它将不得不扩展所有TreeViewItems节点并每次执行updateLayout。由于TreeViewItems仅在扩展父节点时创建,因此没有其他方法可以这样做。
如果您只需要已经打开的节点列表,您可以删除扩展它们的代码,那么它便宜得多。
也许你应该尝试找到另一种方式来管理多选。话虽如此,这里是方法:
public static List<TreeViewItem> FindTreeViewItems(this Visual @this)
{
if (@this == null)
return null;
var result = new List<TreeViewItem>();
var frameworkElement = @this as FrameworkElement;
if (frameworkElement != null)
{
frameworkElement.ApplyTemplate();
}
Visual child = null;
for (int i = 0, count = VisualTreeHelper.GetChildrenCount(@this); i < count; i++)
{
child = VisualTreeHelper.GetChild(@this, i) as Visual;
var treeViewItem = child as TreeViewItem;
if (treeViewItem != null)
{
result.Add(treeViewItem);
if (!treeViewItem.IsExpanded)
{
treeViewItem.IsExpanded = true;
treeViewItem.UpdateLayout();
}
}
foreach (var childTreeViewItem in FindTreeViewItems(child))
{
result.Add(childTreeViewItem);
}
}
return result;
}
-3
这是你问的;
private static TreeViewItem[] getTreeViewItems(TreeView treeView)
{
List<TreeViewItem> returnItems = new List<TreeViewItem>();
for (int x = 0; x < treeView.Items.Count; x++)
{
returnItems.AddRange(getTreeViewItems((TreeViewItem)treeView.Items[x]));
}
return returnItems.ToArray();
}
private static TreeViewItem[] getTreeViewItems(TreeViewItem currentTreeViewItem)
{
List<TreeViewItem> returnItems = new List<TreeViewItem>();
returnItems.Add(currentTreeViewItem);
for (int x = 0; x < currentTreeViewItem.Items.Count; x++)
{
returnItems.AddRange(getTreeViewItems((TreeViewItem)currentTreeViewItem.Items[x]));
}
return returnItems.ToArray();
}
以您的控件作为第一个参数调用例如:
getTreeViewItems(treeView1);
+1
据我所知,treeView.Items返回treeview(真实内容)的项目而不是treeviewitems。如果使用对象文件夹填充树视图,则treeviewItems将返回Folder对象的列表。 –
相关问题
- 1. 如何为WPF TreeView设置DataTemplate以显示列表的所有元素?
- 2. 如何获取TreeView中元素的列表? PyGtk
- 3. 如何获取列表中所有元素的绝对值?
- 4. 如何获取PHP中所有html元素的列表?
- 5. 从WPF的TreeView中读取父元素
- 6. 如何获取ArrayAdapter的所有元素?
- 7. 如何获取元素的所有CSS
- 8. 获取以“Max”作为ID名称的所有表单元素
- 9. 从Treeview获取元素
- 10. 如何获取所选表格的所有元素
- 11. jQuery的:如何获取列表元素
- 12. 如何获取cElementTree中元素的所有文本子元素?
- 13. 如何获取HTML5 SVG元素中所有元素的位置
- 14. 如何获取元素所在的列表?
- 15. 获取所选元素的对象从角元素列表4
- 16. 如何获取列表视图中的所有行wpf
- 17. ArrayList获取所有元素
- 18. 获取所有iframe元素
- 19. 获取阵列中两个元素之间的所有元素
- 20. 如何获取所有元素的ID和表单的值?
- 21. 如何获取TreeView项目列表
- 22. Angular获取共享指令的所有元素的列表
- 23. 获取mootools中元素的所有后代的列表
- 24. 如何获取ng表单中的所有元素
- 25. 从ClassName获取的所有元素中获取特定元素?
- 26. 如何将所有其他元素的列表元素相乘?
- 27. 如何打印列表中的元素和所有元素
- 28. 如何获得'Disjoint Sets'中所有元素的列表
- 29. 动态获取阵列所有元素的所有组合
- 30. WPF TreeView与列表
约http://www.codeproject.com/Articles/24585/WPF-MultiSelect-TreeView-Sample – Klaus78
@ Klaus78什么:本文档不谈论换档选择所有...... :( –
在这篇文章中multiselect是用左Ctrl键实现的,它不应该很难通过shift键来调整多选的代码 – Klaus78