我正在做一个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;
    }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top