77 votes

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

Comment définir événement MouseOver/déclenchement de la frontière, dans le code XAML? Je veux que la frontière passe au vert lorsque la souris est au-dessus, puis de retour vers le bleu lorsque la souris n'est plus sur la frontière. 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 n'ai vraiment pas obtenir ces déclencheurs et les styles dans WPF. Elle est telle une traînée de ne pas être en mesure de réaliser quelque chose de simple que cela.. s'il vous Plaît fournir la solution pour moi et m'aider à comprendre ce que le diable est le problème avec mon code? Merci un tas.

152voto

Groky Points 6866

Oui, c'est déroutant ...

D'après ce billet de blog , il semblerait 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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X