2010-07-28 87 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}"