2016-11-04 8 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

' PreviewMouseDown' начинается с окна и работает. 'MouseDown' начинается с элемента управления и работает так, как надо. Это называется «туннелирование» и «пузырение» соответственно. – Abion47

+2

Возможный дубликат [WPF Get Element (s) под мышью] (http://stackoverflow.com/questions/45813/wpf-get-elements-under-mouse) – Pikoh

ответ

2

Используйте OriginalSource свойство MouseButtonEventArgs:

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

Спасибо! это работает. – Pajkec

0

Вы можете попробовать использовать этот код в вашем случае:

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

вы можете найти больше в этой другой теме: WPF Get Element(s) under mouse

 Смежные вопросы

  • Нет связанных вопросов^_^