以上方法不显示当前控件查询不到
时间: 2024-01-05 21:03:14 浏览: 61
是的,以上方法只能查询到当前控件的子控件,不能查询到当前控件本身。如果需要查询当前控件本身,可以在遍历子控件之前先检查当前控件是否符合条件,如下所示:
```
public static IEnumerable<T> FindVisualChildren<T>(DependencyObject parent) where T : DependencyObject
{
if (parent != null)
{
if (parent is T)
{
yield return (T)parent;
}
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(parent, i);
foreach (T descendant in FindVisualChildren<T>(child))
{
yield return descendant;
}
}
}
}
```
使用示例:
```
IEnumerable<Button> buttons = FindVisualChildren<Button>(parent);
foreach (Button button in buttons)
{
// 处理按钮...
}
if (parent is Button)
{
// 处理当前按钮...
}
```
其中,parent 是要查询子控件的父控件,buttons 是返回的 Button 类型的子控件集合,可以对集合中的每个子控件进行遍历和处理。如果需要处理当前控件本身,可以使用 if 语句判断当前控件是否符合条件。
阅读全文