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

MouseButtonEventArgsのOriginalSourceプロパティを使用します。

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

関連する問題