using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace _29WxOrderWpf.Utils
{
public class UiCtrlUtils
{
///
/// 查找模板控件的子控件
///
///
///
///
public static T FindVisualChild(DependencyObject obj) where T : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child is T)
{
return (T)child;
}
else
{
T childOfChild = FindVisualChild(child);
if (childOfChild != null)
{
return childOfChild;
}
}
}
return null;
}
///
/// 查找模板控件的子控件
///
///
///
///
///
public static T FindVisualChild(DependencyObject obj, string xName) where T : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
string controlName = child?.GetValue(Control.NameProperty) as string;
if (controlName == xName)
{
return (T)child;
}
else
{
T childOfChild = FindVisualChild(child, xName);
if (childOfChild != null)
{
return childOfChild;
}
}
}
return null;
}
public static List FindVisualChildAll(DependencyObject obj, string xName) where T : DependencyObject
{
List list= new List();
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
string controlName = child?.GetValue(Control.NameProperty) as string;
if (controlName == xName)
{
list.Add((T)child);
}
else
{
list.AddRange(FindVisualChildAll(child, xName));
}
}
return list;
}
}
}