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">
。
@ mcavanaugh418,同意,触发器按照列出的顺序进行处理......无论是最后的胜利。 – DRapp
谢谢埃德。非常简单,我无法相信我没有抓住那个开始。我也必须错过IsEnabled属性。感谢您指出,正是我需要的。 – mcavanaugh418