WPF获取控件模板中的控件

在WPF中,位于模板中的控件无法在后台直接通过Name属性获取;

可通过以下方式获取:

public T GetVisualChild(DependencyObject parent, Func predicate) where T : Visual
        {
            int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
            for (int i = 0; i < numVisuals; i++)
            {
                DependencyObject v = (DependencyObject)VisualTreeHelper.GetChild(parent, i);
                T child = v as T;
                if (child == null)
                {
                    child = GetVisualChild(v, predicate);
                    if (child != null)
                    {
                        return child;
                    }
                }
                else
                {
                    if (predicate(child))
                    {
                        return child;
                    }
                }
            }
            return null;
        }




CheckBox chb = GetVisualChild(DG, v => v.Name == "cbbSelALL");
if (null != chb)
{
chb.IsChecked = false;
}

T:想要获取的控件的类型;

DG:包含想要获取的控件的控件名称;

 

转载:https://www.cnblogs.com/sjqq/p/8118692.html

你可能感兴趣的:(wpf)