Silverlightの行動OnAttachedメソッドが返すのはnullでAssociatedObject.FindName

StackOverflow https://stackoverflow.com/questions/2145924

  •  23-09-2019
  •  | 
  •  

質問

私が含まれている「ドラッグハンドル」要素(全体ではなく要素であるドラッグ可能な)で要素をドラッグ可能にするためのSilverlightの振る舞いを作ってるんです。ウィンドウのタイトルバーのようなものだと考えています。

私は呼び出していますOnAttached方法で:AssociatedObject.FindName(DragHandle) しかし、これはNULLを返してます。

私は、AssociatedObjectのLoadedイベントを処理し、そこに私のコードを実行しようとしたが、私はまだnullが返されます。

アム私はFindName指定を行うことができるが何であるかを誤解しますか? AssociatedObjectはItemsControlに(私はドラッグ可能な要素のコレクションをしたい)です。だから、名前スコープの問題のいくつかの種類がありますか。

役に立ちましたか?

解決

はい、それは名前スコープの問題のように聞こえます。 XAMLの MSDNのドキュメントはのはどのようにオーバーになる名前スコープ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