2012-05-04 3 views
0

다른 요소 내부의 요소에 액세스하는 것에 대한 질문이 있습니다.요소 내부 요소 가져 오기 (부모/자식) WPF

상황 버튼 (메뉴 사용) 2 그리드를 누르면

<grid name=container> 
    <grid name=menu > 
     inside here is the menu 
    </grid 
<button /> 
<grid> 

숨길 필요가있다. 버튼을 누를 때 격자 요소에 어떻게 액세스합니까? 그리드가 데이터 템플릿에 있고 여러 객체가 동일한 템플릿을 사용하지만 실제로 활성화 된 템플릿 만 숨길 필요가 있기 때문에 그리드의 실제 이름을 사용하지 않아야합니다.

+0

먼저 처리하는 현재 요소입니다. 즉 DataTemplate이있는 것은 –

답변

1

RoutedEventArgs 클래스에는 필수 정보를 결정하는 데 사용할 수있는 Source, OriginalSource 속성이 있습니다. 또한 보낸 사람 인수는 이벤트 처리기에서도 사용할 수 있습니다.

다음 링크는 원본, 원본 소스 및 보낸 사람의 차이점 (및 질문에 대한 대답)을 설명합니다. RoutedEventArgs.Source vs Sender

RoutedEventArgs.OriginalSource - 먼저 이벤트를

RoutedEventArgs.Source을 제기 원래 객체 - 이벤트를 발생시킨 객체입니다. 이것은 보통 OriginalSource과 동일하지만, 복합 제어를 처리 할 때 그것은 OriginalSource 개체를 포함하는 부모가 될 수 있습니다 *

보낸 사람 -. 전체 코드를 넣어 이벤트

+0

입니다. 실제로 이해하지 못합니다. 지금이 코드를 사용하고 있습니다. 'Button button = (Button) e.Source as Button; ScatterViewItem item = (ScatterViewItem) ScatterView.ContainerFromElement (button);'변수 Item은 버튼이있는 부분의 ScatterViewItem을 제공합니다. 하지만 ScatterView Item은 필요 없지만 ScatterView Item 내부에 "Menu"라는 그리드가 있습니다. – user1371933

+0

소스 코드를 들여다 보면, 부모는 필요 없지만 형제는 필요합니다. 부모를 찾으려면 부모 개체를 찾아야합니다. item.FindName ("menu")과 유사한 항목입니다. http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.findname.aspx 위의 경우를 대비하여 완전한 관련 소스 코드를 입력하여 요구 사항을 해결하십시오. – Tilak