所以这就是我所做的:
我从 UserControl 继承并将检查放入 Loaded Event 的 EventHandler 中。
然后我让我的控件从我的 CustomControl 继承,这很好用。
FindName() 实现由于某种我不知道的原因找不到 FrameworkElements,尽管它们的名称是在 xaml.xml 中定义的。所以这是我用来通过名字找到孩子的例程:
public static T FindVisualChildByName<T>(DependencyObject parent, string name) where T : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
string controlName = child.GetValue(Control.NameProperty) as string;
if (controlName == name)
{
return child as T;
}
else
{
T result = FindVisualChildByName<T>(child, name);
if (result != null)
{
return result;
}
}
}
return null;
}
我不喜欢这个解决方案,但它有效。