Laden...

Control zum ContextMenü ermitteln

Erstellt von HeinzTomato vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.390 Views
HeinzTomato Themenstarter:in
345 Beiträge seit 2005
vor 16 Jahren
Control zum ContextMenü ermitteln

Hallo.

Ich habe einen generelles ContextMenü, welches an alle Controls eines (WPF-)Fensters angehängt wird. Das Problem ist aber nicht NET 3.0-Spezifisch

DIeses Control feuert einen Event-Handler. Nun möchte ich beim Klick auf das MenüItem die Properties des Controls anzeigen. Bisher mache ich dies wie folgt:

 protected virtual void cmi_Click(object sender, RoutedEventArgs e) {
      MenuItem mi = (MenuItem)sender;
      switch (mi.Name) {       
        case "showProp":
          ContextMenu vadder=(ContextMenu)mi.Parent;
          PropertyGrid pg=new PropertyGrid();
          pg.SelectedObject=vadder.Parent;
          break;
      }
    }

Der (vadder.)Parent ist aber leider eben nicht das gesuchte Control, sondern vom Typ PopUp. Wie komm ich denn nun ans Control dran?

Danke schonmal

Mein Haus, mein Viertel, mein Blog

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo HeinzTomato,

ContextMenu.SourceControl

herbivore

6.862 Beiträge seit 2003
vor 16 Jahren

Einfach den Parent abfragen geht nicht, da unter WPF der UI Tree ja beliebig aussehen kann und da noch zig Elemente zwischen dem MenuItem was dein Click auslöst und dem Control was das Contetmenu ausgelöst hat, liegen können.

Ne einfache Lösung ist, sich das ContextMenuOpening Event zu abbonieren, sich die Source der EventArgs merken(weil das das Control ist, das das ContextMenü öffnet) und in deinem Click Event Handler dann das gemerkte Objekt abfragen und danach handeln.

Baka wa shinanakya naoranai.

Mein XING Profil.