Domanda

Ho due controlli A e B. Controllo B è posto sopra A. Quando B viene cliccato evento solo viene cliccato è sparato, però ho bisogno l'evento click di A al fuoco troppo. Può questo in qualche modo essere realizzato utilizzando eventi indirizzati?

Ecco una schermata dei comandi:

alt text http://www.imagebanana.com/img/hu5znv4/buttons .png

Naturalmente questo caso è solo un esempio ridotta, sto cercando un modo generale di eventi raise su tutti i controlli sotto il cursore del mouse / in una sola posizione. Tuttavia, a causa di una soluzione concreta a questo problema mi avrebbe aiutato troppo! La ringrazio molto per qualsiasi suggerimento!

È stato utile?

Soluzione

Questo può accadere se il gestore di eventi del controllo interno imposta la proprietà e.Handled su true. Ciò impedirebbe l'evento indirizzato da bubbling ulteriormente. Ma ho appena controllato e non vedo che il comportamento in WPF 4.

Se e.Handled impedisce il vostro evento, cosa si può fare, tuttavia, è utilizzare il UIElement.AddHandler overload che accetta un parametro booleano handledEventsToo per collegare il vostro evento click. Questo deve essere fatto in codice, non markup. Poi si dovrebbe ricevere l'evento Click nel controllo esterno e la proprietà e.Handled sarà già impostata su true.

Il seguente codice non impostare lo sfondo di entrambi i pulsanti quando si fa clic sul pulsante interno.

<Grid>
    <Button VerticalAlignment="Center" HorizontalAlignment="Center" Click="Click1">
        <Button Width="100" Height="25" Margin="20" Click="Click2" />
    </Button>
</Grid>

Codice Dietro

private void Click1( object sender, RoutedEventArgs e )
{
    ( (Button)sender ).Background = new SolidColorBrush( Colors.Blue );
}

private void Click2( object sender, RoutedEventArgs e )
{
    ( (Button)sender ).Background = new SolidColorBrush( Colors.Red );
    //e.Handled = true; // uncomment to stop bubbling
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top