在视觉树中垂直和水平搜索最简单的方法是什么?
例如,我想找到一个控件,它不在控件的父元素列表中,从而启动搜索。
这是一个简单的例子(每个框代表一些UI控件):
例如,我从嵌套控件( Search-Start )开始,想要找到另一个嵌套控件(应该找到)。
最好的方法是什么?解析完整的可视树似乎不是很有效......谢谢!
答案 0 :(得分:2)
没有水平搜索,class VisualTreeHelpers
谁可以帮助你Navigate on a WPF’s Visual Tree。通过导航,您可以实现各种搜索。
它是最有效的方式,因为它的.Net类专门针对您的要求。
坚持:
// Search up the VisualTree to find DataGrid
// containing specific Cell
var parent = VisualTreeHelpers.FindAncestor<DataGrid>(myDataGridCell);
// Search down the VisualTree to find a CheckBox
// in this DataGridCell
var child = VisualTreeHelpers.FindChild<CheckBox>(myDataGridCell);
// Search up the VisualTree to find a TextBox
// named SearchTextBox
var searchBox = VisualTreeHelpers.FindAncestor<TextBox>(myDataGridCell, "SeachTextBox");
// Search down the VisualTree to find a Label
// named MyCheckBoxLabel
var specificChild = VisualTreeHelpers.FindChild<Label>(myDataGridCell, "MyCheckBoxLabel");