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-mousedown

    private 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


Log in to reply