2016-11-04 6 views
0

클릭 한 요소를 가져올 수있는 메서드를 만들려고합니다. App.xaml.cs에는 응용 프로그램의 각 클릭에 대해 활성화되는 메서드 OnPreviewMouseDown이 있습니다.마우스 클릭시 마우스 커서 아래에 요소 이름 가져 오기

지금 내가 (이 경우에도 가능한 경우) 보낸 사람에서 요소 이름을 받고 몇 가지 도움이

static void OnPreviewMouseDown(object sender, MouseButtonEventArgs e) 
    { 
     if (e.RightButton == MouseButtonState.Pressed) 
     { 
      Control control = (Control)sender; // Sender gives you which control is clicked. 
      string name = control.Name.ToString(); //returns main window name, not element.... 

      string typee = sender.GetType().ToString(); //returns PPPMain.Views.MainWindow 

     } 
    } 

나는이 인터넷에서 다른 제안을 시도했지만 어떤 해결책을 찾지 못했습니다을 필요 ...

미리 감사드립니다.

+1

'

VisualTreeHelper.HitTest(this, e.GetPosition(this)); 

당신이 다른 주제의 자세한 내용을 찾을 수 있습니다 PreviewMouseDown'은 창에서 시작하여 아래로 나아갑니다. 'MouseDown'은 컨트롤에서 시작하여 작동합니다. 이것을 각각 "터널링"및 "버블 링"이라고합니다. – Abion47

+2

가능한 [WPF 마우스에서 요소 가져 오기] (http://stackoverflow.com/questions/45813/wpf-get-elements-under-mouse) – Pikoh

답변

2

사용 MouseButtonEventArgs의 OriginalSource 특성 :

var element = e.OriginalSource as FrameworkElement; 
var name = element?.Name; 
+0

감사! 이 하나의 작품. – Pajkec