Устранение выделения при нажатии кнопки — XAML

У меня есть несколько кнопок в интерфейсе, для которых я настроил цвет. Когда я навожу на них курсор, они окрашиваются в синий цвет, который Microsoft использует для вещей в Windows. Выглядит отлично, только не в моем цветовом сочетании (черный с золотым).

Как устранить эту подсветку при клике? Мне нужно сделать это для всех моих кнопок, которые наследуются от базового стиля:

<Style x:Key="ContentControlElementsStyle" TargetType="ContentControl">
            <Setter Property="FontFamily" Value="Segoe UI"/>
            <Setter Property="Background" Value="Black"/>
            <Setter Property="Foreground" Value="#F1B82D"/>
            <Setter Property="BorderBrush" Value="#F1B82D"/>
</Style>

person nerdenator    schedule 18.12.2013    source источник


Ответы (2)


Используйте следующий стиль кнопки.

 <Style TargetType="Button">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ButtonBase}"  >
                    <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
                        <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <!--<Trigger Property="Button.IsDefaulted" Value="True">
                            <Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
                        </Trigger>-->
                        <!--<Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background" TargetName="border" Value="#FFBEE6FD"/>
                            <Setter Property="BorderBrush" TargetName="border" Value="#FF3C7FB1"/>
                        </Trigger>-->
                        <!--<Trigger Property="IsPressed" Value="True">
                            <Setter Property="Background" TargetName="border" Value="#FFC4E5F6"/>
                            <Setter Property="BorderBrush" TargetName="border" Value="#FF2C628B"/>
                        </Trigger>-->
                        <Trigger Property="ToggleButton.IsChecked" Value="True">
                            <Setter Property="Background" TargetName="border" Value="#FFBCDDEE"/>
                            <Setter Property="BorderBrush" TargetName="border" Value="#FF245A83"/>
                        </Trigger>
                        <Trigger Property="IsEnabled" Value="False">
                            <Setter Property="Background" TargetName="border" Value="#FFF4F4F4"/>
                            <Setter Property="BorderBrush" TargetName="border" Value="#FFADB2B5"/>
                            <Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="#FF838383"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Я прокомментировал триггеры, которые вызывают изменение цвета при наведении мыши и нажатии.

person Boopesh    schedule 19.12.2013

Что-то вроде:

    <Style.Triggers>
        <Trigger Property="Button.IsPressed" Value="True">
            <Setter Property="Content">
                <Setter.Value>
                    <Image Source="MyAwesomeClickedPicture.png" Height="32" Width="32" />
                </Setter.Value>
            </Setter>
        </Trigger>
        <Trigger Property="Button.IsMouseOver" Value="True">
            <Setter Property="Content">
                <Setter.Value>
                    <Image Source="MyAwesomePicture.png" Height="32" Width="32" />
                </Setter.Value>
            </Setter>
        </Trigger>
    </Style.Triggers>

Но в вашем случае, я думаю, вы хотели бы установить цвет, а не изображение, как я.

person TMan    schedule 18.12.2013
comment
Я думаю, вы что-то напутали... Хотя я не избавляюсь от выделения. Я предполагаю, что это способ установки свойств. Любая идея, что это может быть? - person nerdenator; 19.12.2013
comment
Вы пытаетесь избавиться от выделения при наведении курсора мыши? или по клику? - person TMan; 19.12.2013
comment
Я хотел бы устранить подсветку при наведении курсора и изменить цвета при щелчке. Извините, если я не прояснил это раньше: P - person nerdenator; 19.12.2013