3

親コントロール内のコントロールを検索する FramworkElement.FindName() メソッドは、単純なように思えます...

しかし、私はアンティを上げています.フレームワークは私がやろうとしていることを気に入っていないようです.

まず、さまざまな方法があることを認識しています。これは、私が WPF で作成する最初のフォームであることを覚えておいてください。

コレクション内のアイテムの数に基づいて、コントロールを StackPanel にロードしています。[ユーザーが入力した URL] 内のディレクトリの数によってコレクションが決定されるため、このメソッドは必須です。

このリストは、設計中にフォームに配置される垂直スタックパネルに水平スタックパネルを構築します。

したがって、dirStackPanel はフォーム上にあります。controlStackPanel を dirStackPanel に n 回挿入し、それぞれに識別名 (string)("controlStackPanel" + n) を付けます。

controlStackPanel にもコントロールを入力していますが、その親 (dirStackPanel) から名前で controlstackPanel を取得できないことを考えると、これは論点です。

例:

var getPanel = (StackPanel) this.dirStackPanel.FindName((string)("controlStackPanel" + n))Null を返します

明確にするために、AT RUN TIME に挿入する各コントロールには名前が割り当てられており、ループを使用して簡単に取得できます。ただし、FindName メソッドは、親 "StackPanel" の最初の子コントロールでは機能しません。オブジェクトではなくnullを返し続けます。

何か案は?

4

1 に答える 1

8

コントロールを動的に作成している場合は、最初にRegisterNameを呼び出して、それらを見つけられるようにする必要があります。

例えば:

dirStackPanel.RegisterName(controlStackPanel.Name, controlStackPanel);
于 2011-03-10T22:19:13.947 に答える