2

必要な数のラベルを動的に生成し、必要に応じてすべてのラベルにアクセスする必要があります。しかし、FindName()は機能していません...

これが私がしていることの簡単な例です

LabelmyLabelと呼ばれる、クラスから継承されたカスタム作成のクラスがあります。WPFプロジェクトにボタンを配置しました。それをクリックすると、myLabelクラスのインスタンスが動的に作成され、次のようにグリッド(myGrid)に追加されます。

myLabel LBL = new myLabel();
LBL.Height = 30;
LBL.Name = "MyLabel1";
LBL.Content = "I am a label.";
myGrid.Children.Add(LBL);

以前に作成したラベルを見つけて前景色を変更する「色の変更」と呼ばれる別のボタンがあります。そのボタンのクリックイベント内のコードは次のとおりです。

Label Thelabel = (Label)myGrid.FindName("MyLabel1");
Thelabel.Foreground = Brushes.Azure;

問題は、FindName()何も見つからず、常にnullになることです。どうすればその問題を解決できますか?

4

1 に答える 1

2

名前のスコープに問題があり、「FindName」がnullを返す原因になっている可能性があります。

親/祖先から始めて、特定の名前付き要素を見つけるための別の方法の説明は、この投稿で見つけることができます:名前またはタイプでWPFコントロールを見つけるにはどうすればよいですか?

それを試してみて、それがあなたのために働くかどうか見てください。

于 2012-12-04T11:33:09.473 に答える