2010-07-28 81 views

回答

2

您可能需要为按钮制作自己的模板。 (我想这只是你正在努力的悬停颜色,而不是基本颜色,它遵循背景属性)。

这是一个非常简单的按钮模板,它可以帮助您开始。 BackBrush和ForeBrush将需要设置以适应。 (和他们的应用程序的其余部分的后退和前,所以他们向后看在这个例子中)

<Style TargetType="{x:Type Button}"> 
    <Setter Property="OverridesDefaultStyle" Value="true"/> 
    <Setter Property="ClickMode" Value="Press"/> 
    <Setter Property="TextBlock.TextWrapping" Value="Wrap"/> 
    <Setter Property="BorderBrush" Value="#e9dbae" /> 
    <Setter Property="Foreground" Value="{StaticResource BackBrush}" /> 
    <Setter Property="Background" Value="{StaticResource ForeBrush}" /> 

    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ButtonBase}"> 
        <Border 
        x:Name="Border" 
        Background="{TemplateBinding Background}" 
        BorderBrush="{TemplateBinding BorderBrush}" 

         BorderThickness="2" 
        CornerRadius="2" 
         SnapsToDevicePixels="False" 
        RenderTransformOrigin="0.5,0.5" 
        TextBlock.Foreground="{TemplateBinding Foreground}" > 
         <ContentPresenter 
         Margin="2" 
         HorizontalAlignment="Center" 
         VerticalAlignment="Center" 
         /> 
        </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsPressed" Value="true"> 
         <Setter TargetName="Border" Property="RenderTransform"> 
          <Setter.Value> 
           <ScaleTransform ScaleX="0.975" ScaleY="0.975" /> 
          </Setter.Value> 
         </Setter> 
        </Trigger> 
        <Trigger Property="IsEnabled" Value="false"> 
         <Setter Property="Foreground" Value="#999999"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

属性“OverridesDefaultStyle”帮部分,现在我只用ismouseover问题。背景变化一秒钟然后变回蓝色。 – Sys 2010-07-28 13:06:21

1

对于有背景播放添加到Window.Resources(或任何其他应用程序资源字典)这种风格:

<Style TargetType="Button"> 
      <Setter Property="Background" Value="Black"/> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Background" Value="Moccasin"/> 
       </Trigger> 
       <Trigger Property="IsPressed" Value="True"> 
        <Setter Property="Background" Value="Red"/> 
       </Trigger> 
       <Trigger Property="IsEnabled" Value="False"> 
        <Setter Property="Background" Value="Gray"/> 
       </Trigger>     
      </Style.Triggers> 
     </Style> 

如果您不需要重新定义按钮模板(按钮的几何外观),则此方法有效。这里我们没有指定Style x:Key,那么这个样式将被应用于指定资源范围内的所有按钮。指定使用不同的外观风格,你应该每个样式标记与x:Key="StyleName"然后在按钮定义样式Style="{DynamicResource StyleName}"Style="{DynamicResource StyleName}"