2016-04-21 264 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>