2016-04-21 260 views
0

這應該很簡單,因此它是我缺少的東西。我需要在僅點擊期間更改按鈕的背景顏色。因此,如果用戶點擊該按鈕2天,則該兩天期間的顏色會發生變化。一旦用戶完成點擊,它將返回到正常的顏色。想通這將解決我的問題:點擊時WPF按鈕更改背景

<Style x:Key="MyButtonStyle" TargetType="Button"> 
<Setter Property="Background" Value="Red"/> 
<Setter Property="Button.Effect"> 
    <Setter.Value> 
     <DropShadowEffect Color="Black" Direction="320" ShadowDepth="3" BlurRadius="5" Opacity="0.5" /> 
    </Setter.Value> 
</Setter> 
<Style.Triggers> 
    <Trigger Property="IsPressed" Value="True"> 
     <Setter Property="Button.Background" Value="Purple" /> 
     <Setter Property="Button.Effect"> 
      <Setter.Value> 
       <DropShadowEffect Color="Black" Direction="320" ShadowDepth="0" BlurRadius="0" Opacity="0" /> 
      </Setter.Value> 
     </Setter> 
    </Trigger> 
</Style.Triggers> 

現在我知道了IsPressed記者時做的工作爲DropShadowEffect正常工作。但是顏色不會改變。我能想到的唯一原因是IsMouseOver優先於IsPressed。如果是這種情況,我怎麼能讓這兩個事件「一起工作?」

現在人們開始把我和這個聯繫起來;

WPF changing button background on click或本Change Button Background color on EventTrigger in WPF或本Change Button Background color on EventTrigger in WPF

是那些改變按鈕的顏色,但無論在用戶點擊的時間。如上所述,我只希望它在實際用戶點擊期間生效,如DropShadowEffect

回答

1

啊,我說得對!問題實際上是IsMouseOverIsPressed哪裏不合!這是修復;

<Style x:Key="NewButton" TargetType="Button"> 
<Setter Property="Background" Value="Red"/> 
<Setter Property="Button.Effect"> 
    <Setter.Value> 
     <DropShadowEffect Color="Black" Direction="320" ShadowDepth="3" BlurRadius="5" Opacity="0.5" /> 
    </Setter.Value> 
</Setter> 
<Style.Triggers> 
    <MultiTrigger> 
     <MultiTrigger.Conditions> 
      <Condition Property="IsPressed" Value="False" /> 
      <Condition Property="IsMouseOver" Value="True" /> 
     </MultiTrigger.Conditions> 
     <Setter Property="Background" Value="Green" /> 
    </MultiTrigger> 
    <Trigger Property="IsPressed" Value="True"> 
     <Setter Property="Button.Background" Value="Purple" /> 
     <Setter Property="Button.Effect"> 
      <Setter.Value> 
       <DropShadowEffect Color="Black" Direction="320" ShadowDepth="0" BlurRadius="0" Opacity="0" /> 
      </Setter.Value> 
     </Setter> 
    </Trigger> 
</Style.Triggers>