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