【WPF】使用 XAML 的 Trigger 系统实现三态按钮

利用 WPF 的 Trigger 系统,也可以很简单的只使用xmal实现三态按钮。在Window或UserControl的资源中声明按钮的style并加入触发功能。使用的时候直接在button里复写style就可以了,废话不多说,直接上代码:

<UserControl.Resources>
        <Style x:Key="threeStateButton" TargetType="{x:Type Button}">
            <Setter Property="SnapsToDevicePixels" Value="True"/>
            <Setter Property="OverridesDefaultStyle" Value="True"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <StackPanel Orientation="Horizontal" >
                            <Image Name="ImgBtnBg3"
                                   Source="Skins/Default/action_normal.png" />
                        </StackPanel>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="Source"
                                        Value="Skins/Default/action_selected.png"
                                        TargetName="ImgBtnBg3"/>
                            </Trigger>
                            <Trigger Property="IsPressed" Value="True">
                                <Setter Property="Source"
                                        Value="Skins/Default/action_active.png"
                                        TargetName="ImgBtnBg3"/>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter Property="Source"
                                        Value="Skins/Default/action_normal.png"
                                        TargetName="ImgBtnBg3"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

    </UserControl.Resources>

使用时在button中引用:

<Button x:Name="m_btn" Content="Button" HorizontalAlignment="Center" Width="60" Height="60"
               VerticalAlignment="Center" Style="{StaticResource threeStateButton}"/>

时间: 2025-01-16 03:16:27

【WPF】使用 XAML 的 Trigger 系统实现三态按钮的相关文章

WPF学习------XAML 语法详述

XAML 语言规范 XAML 语言规范中也定义或引用了此处定义的 XAML 语法术语. XAML 是一种基于 XML 并遵循或扩展 XML 结构规则的语言. 其中某些术语共享自或基于描述 XML 语言或 XML 文档对象模型时常用的术语. 有关 XAML 语言规范的更多信息,请从 Microsoft 下载中心下载 [MS-XAML]. XAML 和 CLR XAML 是一种标记语言. 顾名思义,公共语言运行时 (CLR) 实现了运行时执行. XAML 本身并非 CLR 运行时直接使用的一种公共语

wpf 窗体中显示当前系统时间

先看一下效果: 这其实是我放置了两个TextBlock,上面显示当前的日期,下面显示时间. 接下来展示一下代码: 在XAML中: <StackPanel Width="205"                    Margin="0,0,57,0"                    HorizontalAlignment="Right">            <TextBlock Height="Auto&qu

WPF入门——XAML和布局容器

WPF是微软推出的基于Windows Vista的用户界面框架:它提供了统一的编程模型.语言和框架,真正做到了分离界面设计人员与开发人员的工作.WPF和.NET中winForm是类似的. XAML 1.XAML是对WPF程序的所用用户界面进行详细的定制. 2.它提供了一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面,而这种实现方式和ASP.NET中的"代码后置"模型非常类似. 3.但是XAML并不是一种用于程序设计的语言,它的功能也不是为了执行应用程序逻辑. 4.说的通俗一点,W

How can I list colors in WPF with XAML?

How can I get list of all colors I can pick in Visual Studio Designer (which is System.Windows.Media.Colors, but that isn't a collection) and put them into my own ComboBox using WPF and XAML markup? 原文链接:http://stackoverflow.com/questions/562682/how-

QT基础(八) 三态按钮设计

三态按钮(普通态,鼠标停留态,点击态)在设计炫丽界时是很常用的一项功能,但QT并没有直接支持这个功能,只好自己写一个了,通过继承QToolButton实现. 上代码: [cpp] view plain copy print? #include <QtGui> class CoolButton : public QToolButton { Q_OBJECT private: QIcon m_NormalIcon; QIcon m_FocusIcon; QIcon m_PressedIcon; p

《深入浅出WPF》学习笔记之系统学习XAML语法

XAML是WPF技术中专门用于设计UI的语言,设计师直接使用XAML设计界面,设计完成后输出XAML代码交给程序员直接使用. XAML是一种由XML派生而来的语言,所以会继承XML中的一些概念. 命名空间: 命名空间为避免标签的名称冲突而出现,可以把来自不同程序集中的类映射到自定义的命名空间前缀,使用语法xmlns[:可选的映射前缀]="名称空间和程序集".没有映射前缀的命名空间为默认命名空间,默认命名空间只能有一个.命名空间映射一般写在根标签上. 标签与运行时对象的关系: 在XAML

WPF - Conditional binding with trigger

/* By Dylan SUN*/ WPF conditional binding enables the application to have different behaviors based on a pre-defined condition. For example, you could use conditional binding to change the background color of your WPF application main window. Suppose

wpf 让图标显示在系统托盘

上次做wpf时想把程序运行的图标显示在任务栏,结果发现wpf的系统托盘和winform的不一样,以前的方法不管用了. 网上搜的好多都是winform的资料,wpf的很少. 最后我把我现在做好的整理分享下,方便别人,也方便自己. 文章难免有些错误,欢迎指正,下面代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Windows; using System.Windo

[WPF系列]-基础系列 Trigger, DataTrigger &amp; EventTrigger

So far, we worked with styles by setting a static value for a specific property. However, using triggers, you can change the value of a given property, once a certain condition changes. Triggers come in multiple flavors: Property triggers, event trig