2

我正在尝试制作一种方法,我可以在其中获取被点击的元素。在 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

        }
    }

我尝试了这个和互联网上的其他一些建议,但没有找到任何解决方案......

提前致谢!

4

2 回答 2

3

使用OriginalSourceMouseButtonEventArgs 的属性:

var element = e.OriginalSource as FrameworkElement;
var name = element?.Name;
于 2016-11-04T11:05:02.883 回答
0

您可以尝试在您的活动中使用此代码:

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

您可以在其他主题中找到更多信息:WPF Get Element(s) under mouse

于 2016-11-04T09:50:39.537 回答