자식이있는 Grid를 나타내는 XAML이 있다고 가정 해 보겠습니다. 각 자식은 x : Name과 함께 다른 컨트롤입니다. 코드에서 이름으로 컨트롤을 "가져 오는"방법은 무엇입니까?Silverlight 3.0 : x : Name을 기준으로 모눈 자식을 얻으려면 어떻게해야합니까?
5
A
답변
8
은 다음 Visual Studio는 자동으로 XAML 파일의 명명 된 요소에 대한 참조를 포함하는 멤버 변수를 생성해야합니다. 따라서 x : Name = "myButton"이있는 Button이 있으면 this.myButton을 통해이 버튼에 액세스 할 수 있습니다.
당신이 아닌 다른 곳에서 명명 된 요소를 참조 할 경우 코드 숨김 파일, 당신은, 지정된 요소 요소에 FindName을 호출 할 수 있습니다 예 :에는 myGrid가에 대한 참조입니다
Button myButton = myGrid.FindName("myButton") as Button;
문제의 표.
1
x : Name이있는 각 컨트롤에는 XAML에 대해 만들어지는 부분 클래스의 필드가 만들어집니다. 이 입력란에는 내부 액세스 기능이 있습니다. 따라서 "코드 숨김"cs (그 용어가 싫은 이유는 무엇입니까?)에서 코드를 사용하면 코드에 직접 액세스하여 컨트롤 이름을 사용할 수 있습니다. 당신이 작성하는 코드는 코드 숨김 XAML 파일의 파일 인 경우
우트를 사용해야 있도록해야합니다! 이 작품. 좀 더 복잡하지만 잘 작동하는 대안을 찾았습니다. private button myButtnon; 의 foreach (myGrid.Children에 FrameWorkElement FE) { 경우 (fe.GetType() == 대해서 typeof (버튼)을 myButton = FE는 버튼과; } – Maciek
참고하여 myButton 외부 코드에서 내부에도 따라서 접근성 필드 것이라고 코드 숨김 파일 FindName에 의지하지 않고도 액세스 할 수 있습니다. – AnthonyWJones
이 간단한 대답을 얼마나 오래 검색했는지 알았습니까? 감사합니다. – Arrie