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