我正在尝试在WPF应用程序中创建一些按钮,该应用程序基于当前对按钮的操作触发事件。我在添加多个触发事件时遇到困难。在下面的代码中,Ispressed的触发器不起作用,但Ismouseover确实如此。如果我删除了其中一个触发因素,但它们永远不会一起工作。
如果禁用了按钮,我还需要添加图像更改,但触发属性似乎不包含禁用的任何内容。我可能必须在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
为True时,IsMouseOver
也是正确的,仅仅是因为鼠标必须在那里按事物。实际上,应用了IsPressed
触发器设置器,但是应用IsMouseOver
触发器设置器并踩下IsPressed
设置器的所作所为。
反向两个触发器的顺序,因此IsPressed
触发器将第二触发触发器评估第二,然后在IsPressed
设置的值上逐步评估。这是带有触发器的常见陷阱。
就您的第二个问题而言,我从来没有<Trigger Property="IsEnabled" Value="False">
遇到任何麻烦。