WPF触发器事件的问题

WPF触发器事件的问题

问题描述:

我正尝试在WPF应用程序中创建一些按钮,这些按钮具有基于当前对按钮执行的操作的触发器事件。我无法添加多个触发事件。在下面的代码isPressed的触发器不起作用,但isMouseOver做。如果我删除了其中一个触发器,但它们不能一起工作。WPF触发器事件的问题

我还需要添加图像更改,如果按钮被禁用,但触发属性似乎不包含禁用的任何东西。我可能必须在C#代码中进行此更改。如果有人有这个想法,这将是伟大的!

任何帮助表示赞赏!

<Button Name="testbutton"  
     Background="Transparent" 
     Cursor="Hand" 
     Visibility="Visible" Grid.Column="2" Grid.Row="1" Margin="10" ToolTip="Exits The Application"> 
      <Button.Template> 
       <ControlTemplate TargetType="Button"> 
        <StackPanel> 
         <Image Name="exitstatic" 
           Source="{StaticResource exit static}" 
           Stretch="Fill" 
           Visibility="Visible" /> 
         <Image Name="exithover" 
           Source="{StaticResource exit hover}" 
           Stretch="Fill" 
           Visibility="Collapsed" /> 
         <Image Name="exitdisabled" 
           Source="{StaticResource exit disabled}" 
           Stretch="Fill" 
           Visibility="Collapsed" /> 
        </StackPanel> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsPressed" 
           Value="true"> 
          <Setter TargetName="exitdisabled" 
            Property="Visibility" 
            Value="Visible" /> 
          <Setter TargetName="exithover" 
            Property="Visibility" 
            Value="Collapsed" /> 
         </Trigger> 

         <Trigger Property="IsMouseOver" 
             Value="true"> 
          <Setter TargetName="exithover" 
            Property="Visibility" 
            Value="Visible" /> 
          <Setter TargetName="exitstatic" 
            Property="Visibility" 
            Value="Collapsed" /> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Button.Template> 
     </Button> 

每当IsPressed是真实的,IsMouseOver也是如此,只是因为鼠标必须有按事情。实际上,应用了IsPressed触发器设置器,但之后应用IsMouseOver触发器设置器,并继续执行IsPressed设置器所做的操作。

颠倒两个触发器的顺序,所以IsPressed触发器将被第二次评估,并且改为由IsPressed设置的值。这是触发器常见的问题。

就你的第二个问题而言,我从来没有遇到任何问题<Trigger Property="IsEnabled" Value="False">

+0

@ mcavanaugh418,同意,触发器按照列出的顺序进行处理......无论是最后的胜利。 – DRapp

+1

谢谢埃德。非常简单,我无法相信我没有抓住那个开始。我也必须错过IsEnabled属性。感谢您指出,正是我需要的。 – mcavanaugh418