AssociatedObject.FindName在Silverlight的行为OnAttached方法返回null
-
23-09-2019 - |
题
我正在做一个Silverlight行为,以使由载“拖动手柄”元件(而不是整个元件是可拖动)拖动的元件。认为它像一个窗口的标题栏。
在OnAttached方法我打电话:AssociatedObject.FindName(DragHandle) 但这返回空。
我又试图处理的AssociatedObject的Loaded事件和运行我的代码,但我仍然得到一个空返回。
我误解了什么FindName能够做什么?该AssociatedObject的是一个ItemsControl(我想拖动元素的集合)。那么,有没有某种名称范围问题的?
解决方案
是,这听起来像一个名称范围问题。该 MSDN上的XAML文档名称范围越过如何namesopes的模板和项目控制定义。您是否使用模板在你的ItemsControl?
项目您可能只是有像这样的东西走可视化树递归按名称查找正确的元素:
private static FrameworkElement FindChildByName(FrameworkElement parent, string name)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
{
FrameworkElement child = VisualTreeHelper.GetChild(parent, i) as FrameworkElement;
if (child != null && child.Name == name)
{
return child;
}
else
{
FrameworkElement grandChild = FindChildByName(child, name);
if (grandChild != null)
{
return grandChild;
}
}
}
return null;
}
不隶属于 StackOverflow