0
A
回答
0
一種可能的方法是改變您與TreeView
s的工作方式。使用數據綁定來控制選擇和擴展。這樣WPF將爲你做所有的工作。
- 創建每個樹節點視圖模型,並添加
IsSelected
和IsExpanded
性能 使用
ItemContainerStyle
到TreeViewItem
小號綁定到它:<TreeView.ItemContainerStyle> <Style TargetType="TreeViewItem"> <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" /> <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" /> </Style> </TreeView.ItemContainerStyle>
現在,您可以編寫代碼即操縱樹的數據,綁定將完成剩下的工作。
這裏的一個通用Node<T>
視圖模型和用於搜索匹配的值,沿途擴大和選擇節點的第一個節點的遞歸方法的一個例子:
class Node<T> : INotifyPropertyChanged // should implement this properly on all properties for binding to work
{
public bool IsExpanded { get; set; }
public bool IsSelected { get; set; }
public T Value { get; set; }
public ObservableCollection<Node<T>> Children { get; }
}
bool TryFindNode<T>(Node<T> node, T value)
{
bool wasFound = false;
if (Equals(node.Value, value))
{
node.IsExpanded = true;
node.IsSelected = true;
wasFound = true;
}
else
{
foreach (var childNode in node.Children)
{
if (SearchNode(childNode, searchText))
{
node.IsExpanded = true;
wasFound = true;
break;
}
}
}
return wasFound;
}
相關問題
- 1. 滾動型:檢查是否視圖是在屏幕上可見或不可見
- 2. 當鍵盤可見時Xamarin Forms視圖不滾動
- 3. 是否可以在Oracle中使虛擬列不再虛擬化?
- 4. 虛擬樹視圖的滾動限制是什麼?
- 5. 滾動視圖是不可滾動
- 6. 滾動條可見,不能滾動
- 7. 是否有可能查詢WebBrowser控件水平滾動條是否可見?
- 8. 當前不可見時展開/選擇樹形視圖節點
- 9. 當滾動視圖didEndDragging時,預測可見的索引路徑
- 10. 定製樹視圖虛擬化
- 11. 可能在wrappanel wpf中使用虛擬化平滑滾動?
- 12. 是否有可能重用UIScrollView滾動物理的自定義滾動視圖?
- 13. 使滾動視圖始終可見?
- 14. 檢查所選項目是否可見[虛擬列表查看詳細視圖]
- 15. 當鍵盤可見時滾動內容
- 16. 虛擬樹視圖循環
- 17. 是否有可能知道節點何時添加到樹視圖?
- 18. 是否有可能將視頻流僞造成在Skype,Lync等中可見的虛擬凸輪?
- 19. iOS6 CALayer釋放/卸載滾動視圖中的滾動不可見的視圖
- 20. 當滾動條可見時頁面佈局會中斷 - 是否有CSS修復?
- 21. 當TD被點擊時,可滾動的DIV滾動到頂部
- 22. wxwidgets有可能確定窗口當前是否可見?
- 23. 模板可能不是'虛擬的'
- 24. 是否有可能有效地創建時間樹圖結構?
- 25. 在水平滾動時保持樹形視圖的最左側列可見
- 26. 是否有可能調用一個沒有可見視圖的URL?
- 27. 是否有可能檢查TabWidget中的特定「TAB」在當前視圖中是否可見?
- 28. 是否有可能使鍵盤不可見,而Chrome的地址欄不可見?
- 29. 是否有可能從另一臺虛擬機中殺死Java虛擬機?
- 30. 儘管被關閉,滾動視圖滾動指示器仍可見