WPF 使用 VisualTreeHelper 垂直和水平查找元素

WPF find element with VisualTreeHelper vertical and horizontal

在可视化树中垂直和水平搜索最简单的方法是什么?

例如我想从开始搜索的控件中找到一个不在父列表中的控件。

这是一个简单的例子(每个方框代表一些 UI 控件):

比如我从一个嵌套控件开始(Search-Start),想找另一个嵌套控件(应该可以找到) .

最好的方法是什么?解析完整的可视化树好像不是很有效。。。谢谢!

没有横向搜索,class VisualTreeHelpers谁能帮助你Navigate on a WPF’s Visual Tree。通过导航,您可以实现各种搜索。

这是最有效的方法,因为它是专门针对您的要求的 .Net class。

为了说明:

// 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");