2014-07-12 4 views
-1

버튼 인 클릭 된 UIElement의 자식 요소를 가져오고 싶습니다. 어쩌면 거기에 간단하고 짧은 해결책이 있을까요? 나는이 답변을 잠시 수색했지만 이해하기 쉽고 사용하기 쉬운 해결책을 찾지 못했습니다. 나는이 질문과 관련된 어떤 종류의 도움에 감사 할 것이다. 내가 지금이

코드 :클릭 된 UIElement 하위를 찾는 방법

private new void MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 

    if (sender == (sender as UIElement)) 
    { 

     //TODO: getting controls name that is placed inside clicked UIElement 

    } 

} 

편집 :

이 UIElement에이 ResourceDictionary의 템플릿을 사용 ContentControl을 것을 언급하고 싶었다. 내 XAML 코드는 모양이 목적

Source

이 속성은 이벤트를 발생시킨 개체에 대한 참조를 포함 위해 활용할 수 MouseButtonEventArgs의 두 가지 속성이 있습니다이

<ContentControl Style="{StaticResource DesignerItemStyle}"> 
     <Button x:Name="btnAdd" Content="add function" IsHitTestVisible="True" 
     HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
</ContentControl> 
+2

, 당신도 '보낸 사람을 사용할 수 있습니다 '또는'e.Source'를 사용하십시오. 그렇지 않으면'e.OriginalSource'를 조사해야 할 수도 있습니다. –

답변

1

같은 . 예를 들어, 버튼 등

OriginalSource

합성 된 요소 트리를 평평하게 수행되었을 수 있습니다 부모 클래스에 의해 가능한 Source 조정하기 전에 순수 적중 테스트에 의해 결정되는 원본보고 소스. Rectangle, Border 또는 Button 내부의 템플릿 요소를 예로들 수 있습니다.

OriginalSource은 다음 OriginalSource의 논리 부모를 검색 할 수 있습니다 원하는 요소하지 않고 그 원하는 될 가능성이있는 경우는 FrameworkElement 이상의 적절한

castingOriginalSource하여 요소에 대한 Name를 검색 할 수 있습니다 요소를 검색하고 이름을 검색하는 것은 위와 동일합니다.

논리 부모 예를 검색

당신은 그 UIElement에 핸들러 부착되는 이벤트`MouseLeftButtonDown`의 소유자 인 경우로, 여기에 의미 UIElement에에 따라 달라집니다
LogicalTreeHelper.GetParent(e.OriginalSource as DependencyObject); 
+1

답장을 보내 주셔서 감사합니다 @ pushpraj. 당신이 준 코드를이 코드로 바꿨습니다. -'var childControl = LogicalTreeHelper.GetChildren (DependencyObject로 e.Source);'그런 다음 자식 컨트롤 이름을 얻으려면 foreach 루프를 사용합니다. 큰! – Edgar

+0

방금이 메서드는 해당 자식 요소의 Content not name 또는 다른 속성 만 반환한다는 것을 알게되었습니다. 또한 FrameworkElement로 캐스팅 할 때 e.OriginalSource 또한 Content가 아닌 다른 속성을 가져올 방법이 없습니다. – Edgar

+0

자식을 얻기 위해'Panel '에 캐스팅 할 전략을 정의하거나 필요에 따라 객체의 유형이나 다른 적합한 유형에 따라 내용을 가져 오는'ContentControl'을 정의 할 수 있습니다. 'FrameworkElement'는'Name' 속성을 얻는 데 도움이되는 아주 기본적인 예제입니다. 앱의 샘플을 게시 할 수 있습니다. 그것을 살펴본 후 제안 할 수 있습니다. – pushpraj

관련 문제