因此,這裏是我做過什麼:
我從用戶控件繼承,並把檢查的一個事件處理程序的Loaded事件。
然後我讓我的控制從我的CustomControl繼承,這工作得很好。
由於某些我不知道的原因,FindName()實現不會找到FrameworkElements,儘管它們的名稱是在xaml中定義的。所以這裏是我用來找到孩子們的名字的例程:
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;
}
我不喜歡這個解決方案,但它的工作原理。