我有一个简单的问题。使用IsPressed触发器,我希望能够将按钮的背景颜色设置为默认灰色以外的其他颜色。这里是按钮看起来如果没有按它
为什么当IsPressed为true时按钮背景默认为灰色
喜欢什么,这里是个什么样子点击
下面是按钮触发时等等。我知道触发器是正确触发的,因为点击时按钮边缘的发光效果。我也知道这个笔刷是正确的,因为我试着将它作为背景画笔来看看它的样子。
<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,否则它不显示
你能分享模板XAML吗? – 2010-04-27 03:46:50
它不是模板的一部分,它是风格的一部分。我已经添加了完整的样式,让你看看 – TerrorAustralis 2010-04-27 06:58:40
我认为Kishore意味着刷子 – benPearce 2010-04-27 07:08:52