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");
在可视化树中垂直和水平搜索最简单的方法是什么?
例如我想从开始搜索的控件中找到一个不在父列表中的控件。
这是一个简单的例子(每个方框代表一些 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");