web-dev-qa-db-ja.com

XAMLで境界線のMouseOverイベント/トリガーを設定する方法は?

XAMLで境界線のMouseOverイベント/トリガーを設定する方法は?マウスが境界線上にあるときに境界線を緑色に変え、マウスが境界線上になくなったときに境界線を青色に戻します。次のコードを使用できないのはなぜですか。

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

私は実際にこれらのトリガーとスタイルをWPFで取得しません。このような単純なことを達成できないのは、このようなドラッグです。私に解決策を提供し、私のコードで何が間違っているのかを理解してください。本当にありがとう。

71
Boris

はい、これは混乱しています...

このブログ投稿 によると、これはWPFの省略のようです。

機能させるには、スタイルを使用する必要があります。

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

ほとんどの人はこの種のことをスタイルに取り入れる傾向があるため、この問題はそれほど一般的ではないので、複数のコントロールで使用できます。

135
Grokys