web-dev-qa-db-fra.com

Comment définir un événement / déclencheur MouseOver pour une bordure en XAML?

Comment définir un événement/déclencheur MouseOver pour une bordure en XAML? Je veux que la bordure devienne verte lorsque la souris est dessus, puis redevienne bleue lorsque la souris ne survole plus la bordure. Pourquoi ne puis-je pas simplement utiliser le code suivant:

<Border 
    Name="ClearButtonBorder" 
    Grid.Column="1" 
    CornerRadius="0,3,3,0" 
    Background="Blue">
    <Border.Triggers>
        <Trigger Property="Border.IsMouseOver" Value="True">
            <Setter Property="Border.Background" Value="Green" />
        </Trigger>
        <Trigger Property="Border.IsMouseOver" Value="False">
            <Setter Property="Border.Background" Value="Blue" />
        </Trigger>
    </Border.Triggers>
    <TextBlock 
        HorizontalAlignment="Center" 
        VerticalAlignment="Center" 
        Text="X" />
</Border>

Je ne comprends vraiment pas ces déclencheurs et styles dans WPF. C'est un tel frein de ne pas pouvoir réaliser quelque chose d'aussi simple que cela. Merci de me fournir la solution et de m'aider à comprendre ce qui ne va pas avec mon code? Merci beaucoup.

71
Boris

Oui, c'est déroutant ...

Selon cet article de blog , il semble que ce soit une omission de WPF.

Pour que cela fonctionne, vous devez utiliser un style:

    <Border Name="ClearButtonBorder" Grid.Column="1" CornerRadius="0,3,3,0">
        <Border.Style>
            <Style>
                <Setter Property="Border.Background" Value="Blue"/>
                <Style.Triggers>
                    <Trigger Property="Border.IsMouseOver" Value="True">
                        <Setter Property="Border.Background" Value="Green" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Border.Style>
        <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="X" />
    </Border>

Je suppose que ce problème n’est pas si courant que la plupart des gens ont tendance à intégrer ce genre de chose dans un style, de sorte qu’il peut être utilisé sur plusieurs contrôles.

135
Grokys