2012-12-04 6 views
2

원하는만큼 많은 라벨을 동적으로 생성하고 원하는 경우 모든 레이블 중 하나에 액세스해야합니다. 하지만 FindName()는 WPF에서 FindName()을 사용하여 동적으로 생성 된 컨트롤을 찾을 수 없습니다.

는 여기에 내가 myLabel라는 Label 클래스에서 상속 된 사용자 정의 작성된 클래스를 가지고 내가

을하는 일의 간단한 예제 ... 작동되지 않았습니다. 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() 아무것도 발견하지 항상 널 않을 것입니다! 어떻게 문제를 해결할 수 있습니까?

답변

2

'FindName'이 null을 반환하는 원인이되는 이름 범위 지정에 문제가있을 수 있습니다.

부모부터 특정 이름 첨부 요소를 찾는 다른 방법에 대한 설명은/조상은이 게시물에서 확인할 수 있습니다

How can I find WPF controls by name or type?이 당신을 위해 작동하는 경우 시도하고 볼 것을 제공합니다.

+0

감사합니다. 나는 첫 번째 방법을 사용했고 효과가있었습니다! :) – Ali

+0

우수! 처음 시도 할 때 항상 즐겁습니다. –

+0

예. 매우 동기 부여가 있습니다. 다시 한 번 감사합니다. chamila_c;) – Ali