WPF触发事件的问题



我正在尝试在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">遇到任何麻烦。

最新更新