Получить имя элемента под курсором мыши по щелчку мыши

Я пытаюсь создать метод, в котором я могу получить элемент, по которому щелкнули. В 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

        }
    }

Я попробовал это и некоторые другие предложения из интернета, но не нашел никаких решений...

Заранее спасибо!

2 ответа

Решение

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

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

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

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

Вы можете найти больше в этой другой теме: WPF Получить элемент (ы) под мышью

Другие вопросы по тегам