在WPF内的WPF控件上实现Click事件

时间:2012-03-12 01:07:17

标签: c# wpf events

这与我的previous question相关联,因为它处理的是同一段代码;既然我已经完成了按钮背景的更改,问题是现在我需要实现相同的代码,但不是没有用于ButtonPressed而是用于单击按钮。我在代码中添加了点击处理程序,但它不起作用 - 背景不会改变。我尝试了不同的方法,即使使用位图和图像源,但它不起作用,改变根本不会发生。现在我想实现背景图像的更改,但它需要在XAML文件中完成,而不是在.cs中。代码:

<Button x:Class="proba4.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="120" d:DesignWidth="300" IsEnabled="True">
    <Button.Template>
        <ControlTemplate TargetType="{x:Type Button}">
            <Grid>
                <Image Name="Normal" Source="C:\stuff\off_button.gif"/>
                <Image Name="Pressed" Source="C:\stuff\on_button.gif" Visibility="Hidden"/>

            </Grid>
            <ControlTemplate.Triggers>
                <Trigger Property="IsPressed" Value="True">
                    <Setter TargetName="Normal" Property="Visibility" Value="Hidden"/>
                    <Setter TargetName="Pressed" Property="Visibility" Value="Visible"/>
                </Trigger>

            </ControlTemplate.Triggers>
        </ControlTemplate>
    </Button.Template>
</Button>

请注意,我已经查找了一些用于单击的按钮属性,但没有,我在互联网上找到的所有实现都在处理在控件的.cs代码中添加Button_Click方法,并且因此对我来说不起作用,我需要找到另一种方式 - 希望像使用WPF完全实现点击控制一样。 我想这很精致,但我非常感谢你对此有所帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

听起来你想要ToggleButton的行为,而不是Button。在Button点击是一个离散事件,而不是控件进入的状态,可以由属性表示。单击时ToggleButton在两个(或三个)状态之间来回切换,IsChecked属性表示状态,并且可以像在IsPressed中一样绑定到触发器中你的榜样。