У меня простая проблема. Используя триггер IsPressed, я хочу установить цвет фона кнопки, отличный от серого по умолчанию. Вот как выглядит кнопка, когда она не нажата
и вот как это выглядит при нажатии
Вот триггер для кнопки. Я знаю, что триггер срабатывает правильно из-за эффекта свечения по краю кнопки при нажатии. Я также знаю, что кисть верна, потому что я опробовал ее как кисть фона, чтобы увидеть, как она выглядит.
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{DynamicResource ButtonHoverBrush}"/>
<Setter Property="BitmapEffect" Value="{DynamicResource ButtonHoverGlow}"/>
</Trigger>
<!-- This is the trigger which is working but the background color wont change -->
<Trigger Property="IsPressed" Value="True">
<Setter Property="BitmapEffect" Value="{DynamicResource ButtonHoverGlow}"/>
<Setter Property="Background" Value="{DynamicResource ButtonPressedBrush}" />
</Trigger>
</Style.Triggers>
Вот весь стиль, как вы можете видеть, это стиль по умолчанию, применяемый ко всем кнопкам в приложении.
<Style TargetType="Button">
<Setter Property="Background" Value="{DynamicResource ButtonBrush}" />
<Setter Property="Foreground" Value="Black" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{DynamicResource ButtonHoverBrush}"/>
<Setter Property="BitmapEffect" Value="{DynamicResource ButtonHoverGlow}"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="BitmapEffect" Value="{DynamicResource ButtonHoverGlow}"/>
<Setter Property="Background" Value="{DynamicResource ButtonPressedBrush}" />
</Trigger>
</Style.Triggers>
</Style>
Вот окончательное решение (спасибо всем, кто помог)
Создайте шаблон элемента управления для общей кнопки и выполните привязку данных:
<ControlTemplate TargetType ="Button" x:Key="ButtonControlTemplate">
<Border Background="{TemplateBinding Background}"
BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
CornerRadius="3">
<Grid>
<ContentPresenter ContentSource="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
</Grid>
</Border>
</ControlTemplate>
Добавить шаблон управления в стиль:
<Style TargetType="Button">
<Setter Property="Background" Value="{DynamicResource ButtonBrush}" />
<Setter Property="Foreground" Value="Black" />
<Setter Property="Template" Value="{DynamicResource ButtonControlTemplate}" />
<Setter Property="BorderThickness" Value="1" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{DynamicResource ButtonHoverBrush}"/>
<Setter Property="BitmapEffect" Value="{DynamicResource ButtonHoverGlow}"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="BitmapEffect" Value="{DynamicResource ButtonHoverGlow}"/>
<Setter Property="Background" Value="{DynamicResource ButtonPressedBrush}" />
</Trigger>
</Style.Triggers>
</Style>
Примечание: BorderThickness по умолчанию равен 1, потому что в противном случае он не показывает