Я использую кнопку в wpf с градиентным фоном. Но фон не работает при наведении курсора мыши. Что-то не так в моем коде?

   <Button x:Name="button1" Content="Login" HorizontalAlignment="Left" Margin="172,149,0,0" VerticalAlignment="Top" Width="91" Click="button_Click" Height="34" Foreground="Black">
        <Button.Style>
            <Style TargetType="Button">
                <Setter Property="Background">
                    <Setter.Value>
                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                            <GradientStop Color="#FF2B4702" Offset="1"/>
                            <GradientStop Color="#FFAFDE80" Offset="0"/>
                        </LinearGradientBrush>
                    </Setter.Value>
                </Setter>
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Background">
                            <Setter.Value>
                                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                    <GradientStop Color="#FF2B4702" Offset="0"/>
                                    <GradientStop Color="#FFAFDE80" Offset="1"/>
                                </LinearGradientBrush>
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>
2
Neo 15 Апр 2016 в 10:33

2 ответа

Лучший ответ

Согласно MSDN {{X0} } жестко запрограммирован в шаблоне.

Чтобы изменить это, вам нужно изменить шаблон.

Щелкните правой кнопкой мыши кнопку и выберите Edit Template = & gt; Edit a Copy.

У вас получится такой шаблон:

<Window.Resources>
    <ControlTemplate x:Key="ButtonBaseControlTemplate1" 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>
</Window.Resources>

В шаблоне вы можете изменить все свойства, которые хотите.

2
Nawed Nabi Zada 15 Апр 2016 в 08:01

Проблема заключалась в том, что вы пытались изменить передний план, а не исходный фон.

<Style.Triggers>
     <Trigger Property="IsMouseOver" Value="True">
         <Setter Property="Background">
             <Setter.Value>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                   <GradientStop Color="#FF2B4702" Offset="0"/>
                   <GradientStop Color="#FFAFDE80" Offset="1"/>
                </LinearGradientBrush>
              </Setter.Value>
          </Setter>
     </Trigger>
</Style.Triggers>
0
Nawed Nabi Zada 15 Апр 2016 в 08:35