WPF рисовать границу на MouseOver - PullRequest
6 голосов
/ 15 июня 2010

У меня есть приложение WPF, в котором я пытаюсь создать кнопку закрытия, например изображение.Я пытаюсь нарисовать границу или сделать так, чтобы она появлялась при наведении мыши ... Но я не могу заставить ее работать.Я пробовал, как 6 различных способов сделать это ... Изображения, границы с изображениями, кисти, и т. Д.

В настоящее время я использую следующий код:

<Canvas Name="cMin" Height="16" Width="16"
        Grid.Column="1" Grid.Row="1">
    <Canvas.Background>
        <ImageBrush ImageSource="_.png" Stretch="None" />
    </Canvas.Background>
    <Border BorderBrush="Transparent" BorderThickness="1" Background="Transparent" 
            CornerRadius="0" Height="18" Width="18">
         <Border.Style>
            <Style TargetType="Border">
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="BorderBrush" Value="LightBlue" />
                    </Trigger>
                    <Trigger Property="IsMouseOver" Value="False">
                        <Setter Property="BorderBrush" Value="Transparent" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Border.Style>
    </Border>
</Canvas>

Любая помощьбудет признателен, спасибо!

1 Ответ

10 голосов
/ 15 июня 2010

Проблема в том, что ваше локальное значение для свойства BorderBrush имеет приоритет над вашим Style Trigger. В этой статье MSDN описывается, как разрешается эффективное значение.В основном удалите локальное значение из элемента Border, и оно должно работать.Если вам нужно указать свойство, вы можете сделать это в Setter в Style.Кроме того, второй Trigger не требуется, так как значение вернется к исходному значению, когда свойство вернется к значению false:

<Border BorderThickness="1" Background="Transparent" 
        CornerRadius="0" Height="18" Width="18">
     <Border.Style>
        <Style TargetType="Border">
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="BorderBrush" Value="LightBlue" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Border.Style>
</Border>
...