3

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

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

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

视觉树

例如,我从一个嵌套控件(Search-Start)开始,并希望找到另一个嵌套控件(应该找到)。

做这个的最好方式是什么?解析完整的视觉树似乎不是很有效...谢谢!

4

1 回答 1

4

没有水平搜索,class VisualTreeHelpers谁可以帮助您 在 WPF 的 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");
于 2015-09-17T08:05:35.283 回答