WPF查找元素与VisualTreeHelper垂直和水平

时间:2015-09-17 07:33:50

标签: c# wpf visual-tree visualtreehelper

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

例如,我想找到一个控件,它不在控件的父元素列表中,从而启动搜索。

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

Visual-Tree

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

最好的方法是什么?解析完整的可视树似乎不是很有效......谢谢!

1 个答案:

答案 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");