WPF Button isPressed and isEnabled problem
I fixed it after studying the code at http://mark-dot-net.blogspot.com/2007/07/creating-custom-wpf-button-template-in.html...
This is what I ended up with, which works great.
<!-- Blue Button -->
<Style x:Key="BlueButton" TargetType="{x:Type Button}">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border"
BorderThickness="2"
Padding="4,2"
BorderBrush="{DynamicResource BlueGradient2}"
CornerRadius="5"
Background="{TemplateBinding Background}">
<Grid >
<ContentPresenter
HorizontalAlignment="Center"
VerticalAlignment="Center"
Name="content"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{DynamicResource BlueGradient3}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="{DynamicResource DarkGradient1}"/>
<Setter Property="BorderBrush" Value="{DynamicResource BlueGradient3}"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" Value="{DynamicResource DarkGradient1}"/>
<Setter Property="BorderBrush" Value="{DynamicResource BlueGradient1}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/>
<Setter Property="Background" Value="{DynamicResource BlueGradient1}"/>
<Setter Property="BorderBrush" Value="{DynamicResource BlueGradient2}"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="TextBox.TextAlignment" Value="Center"/>
<Setter Property="FontFamily" Value="Trebuchet MS"/>
<Setter Property="FontSize" Value="15pt"/>
<Setter Property="Effect" Value="{DynamicResource KioskStandardDropShadow}" />
</Style>
ocodo
↘↓ ↘ ↘ ← ↙ ⤢↘ ↘← ↑ ↘← ↑⤡↙ → ↙ ↓↙↙ ↙ → ↗ ↙ ↘ ← ↙↙↘ ↙↘ ↙ ↑ ↘← ↘ ↑↕ ← ↓↓↑ ↙ ← ↘ ← ↙ ↕← ↗ ↔↙ ↗↓ ↑↑ →↖ ↙← ↓ ↘ → ↘ ↘ ↓↘← ↗ ↙↙ ↙ ↖ ↘ ←↓↙← ↑ ↑↑ ↑ → ↘ → ↙ ↘ ↙ ←↙ ↘ ↕ ↔ ↙↙ ← ↙ ⤡ ↑ ↘ ←↓↓↓ ↓↓↓ ↙↘ ↘→ ↘ ↙ ← ↑ ↓ ↘ → ↘ ↙ ← →↘ ↓ ↓ ↙← ↕← ↗ →↘ ↙← →↗ ↓ ↖← ↖ ↕ ↔ ↙ ↗↔ ↖ ↑↓ ↙↑ ↖← ↑↘ ↙ ↓ →↗→↖↑ ↑ ↑ ↗↖ ↑→ ↙↓ ↙ ↑ ↗ ↔ ↖↙←↙↓↖ ↗↔ ↕ ↑ → ↙ ↘ ←↗ →↖ ↘ ↕ ← ↖ ⤡ ↗ ← ↙ ↑ ↙ ↖ ↓↖← ↖ ↑ ↓ ↓↑↙ → ↘↑↓↖ ↗ ↙← ↑ ↙→ ↕ → ↖ ⤡ ↖ →↗ ↓ ↖ ↑ ↑ ↗↖
Updated on August 21, 2020Comments
-
ocodo over 3 years
Update: using Expression Blend 3
I'm trying to style the IsPressed & IsEnabled(false) property triggers for a class of buttons in a WPF application.
Here's a UserControl with a Button using the style...
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="Kiosk.ButtonTest" x:Name="UserControl"> <Grid x:Name="LayoutRoot"> <Button HorizontalAlignment="Left" Style="{DynamicResource BlueButton}" VerticalAlignment="Top" Width="155" Content="Button" Height="52.9"/> </Grid> </UserControl>
And here's the style fragment...
<!-- Blue Button --> <Style x:Key="BlueButton" TargetType="{x:Type Button}"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="{DynamicResource BlueGradient3}"/> </Trigger> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Background" Value="{DynamicResource DarkGradient1}"/> <Setter Property="BorderBrush" Value="{DynamicResource BlueGradient3}"/> </Trigger> <Trigger Property="IsPressed" Value="True"> <Setter Property="Background" Value="{DynamicResource DarkGradient1}"/> <Setter Property="BorderBrush" Value="{DynamicResource BlueGradient1}"/> </Trigger> </Style.Triggers> <Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/> <Setter Property="Background" Value="{DynamicResource BlueGradient1}"/> <Setter Property="BorderBrush" Value="{DynamicResource BlueGradient2}"/> <Setter Property="Foreground" Value="White"/> <Setter Property="HorizontalContentAlignment" Value="Center"/> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="TextBox.TextAlignment" Value="Center"/> <Setter Property="FontFamily" Value="Trebuchet MS"/> <Setter Property="FontSize" Value="18"/> <Setter Property="Effect" Value="{DynamicResource KioskStandardDropShadow}" /> </Style> <LinearGradientBrush x:Key="BlueGradient1" EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="#FF3FA2FD" Offset="0"/> <GradientStop Color="#FF014782" Offset="1"/> </LinearGradientBrush> <LinearGradientBrush x:Key="BlueGradient2" EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="#FF014782" Offset="0"/> <GradientStop Color="#FF3FA2FD" Offset="1"/> </LinearGradientBrush> <LinearGradientBrush x:Key="BlueGradient3" EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="#FF014782" Offset="1"/> <GradientStop Color="#FF0B2135" Offset="0"/> </LinearGradientBrush> <LinearGradientBrush x:Key="DarkGradient1" EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="#FF2A2A2A" Offset="0"/> <GradientStop Color="#FF474747" Offset="0.478"/> <GradientStop Color="#FF323232" Offset="0.487"/> <GradientStop Color="Black" Offset="1"/> <GradientStop Color="#FF282828" Offset="0.681"/> </LinearGradientBrush> <!-- Regular Drop Shadow --> <DropShadowEffect x:Key="KioskStandardDropShadow" Opacity="0.6" BlurRadius="10" ShadowDepth="5" Direction="308"/> <!-- fragment end -->
The Default and Mouse over changes work fine, but isEnabled false and isPressed true still show the Button default colors.
What am I doing wrong?