WPF: PreviewMouseDown bei best. Elementen im Container unterdrücken!?
-
Hallo Leute,
habe hier folgenden XAML Code:
<Grid DataContext="{Binding ElementName=root}" PreviewMouseDown="Grid_PreviewMouseDown" Background="White"> <Button Width="50" Height="40" Click="Button_Click">Foo</Button> </Grid>
Wenn ich nun auf den Button drücke, wird zuerst "Grid_PreviewMouseDown" und dann "Button_Click" gefeiert! Was ja auch richtig ist.
Nun möchte ich dieses Verhalten explizit für meinen "Button" unterdrücken, so dass nur der Button Event kommt! Und für den restlichen Grid -Content soll es weiter funktionieren! Gibt das ne Möglichkeit?
Es würde auch schon reichen wenn die Reihenfolge der Events umgekehrt werde, also statt Tunnel => Bubblen!
Grüße und Danke
-
Du könntest in Grid_PreviewMouseDown schauen, ob der sender / die source Dein Button ist und dann einfach nichts tun. ...hm, sorry, das funktioniert so nicht, hatte was anderes im Kopf.
-
Soweit war ich auch schon Sackgasse... hmm echt doof.. Denkt nach Jungs;)))
-
Ähm, es geht ja doch, Google hilft:
http://stackoverflow.com/questions/20930759/get-the-name-of-the-element-on-which-i-clicked-mousedownprivate void Grid_PreviewMouseDown(object sender, MouseButtonEventArgs e) { var mouseWasDownOn = e.Source as FrameworkElement; if (mouseWasDownOn != null) { string elementName = mouseWasDownOn.Name; if (elementName.Equals("button1")) { // Nix zu tun in dem Fall.. } else { // Dein Code für den Rest.. } } }
<Grid DataContext="{Binding ElementName=root}" PreviewMouseDown="Grid_PreviewMouseDown" Background="White"> <Button Width="50" Height="40" Click="Button_Click" Name="button1">Foo</Button> </Grid>
-
Super genau dass Dankeee