it-swarm.com.de

Wie setze ich MouseOver Event / Trigger für Border in XAML?

Wie setze ich MouseOver Event/Trigger für Border in XAML? Ich möchte, dass der Rand grün wird, wenn sich die Maus darüber befindet, und dann wieder blau wird, wenn sich die Maus nicht mehr über dem Rand befindet. Warum kann ich nicht einfach den folgenden Code verwenden:

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

Ich verstehe diese Trigger und Stile wirklich nicht in WPF. Es ist so eine Belastung, etwas Einfaches wie dieses nicht erreichen zu können. Bitte geben Sie die Lösung für mich an und helfen Sie mir zu verstehen, was zum Teufel mit meinem Code los ist. Vielen Dank.

71
Boris

Ja, das ist verwirrend ...

Laut diesem Blog-Beitrag scheint dies eine Auslassung von WPF zu sein.

Damit es funktioniert, müssen Sie einen Stil verwenden:

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

Ich denke, dieses Problem ist nicht so häufig, da die meisten Leute dazu neigen, solche Dinge in einen Stil zu zerlegen, sodass es für mehrere Steuerelemente verwendet werden kann.

135
Grokys