用 Blend 自动生成 自定义按钮控件 及设置触发器

1.构成控件

2.设置触发器

3.效果图

最后附上自动生成的代码 虽然有一句是似懂非懂

<ContentPresenter x:Name="contentPresenter" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>

<Window x:Class="BlendWpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="按钮控件" Height="350" Width="525">
    <Window.Resources>
        <Style x:Key="BtnStyle" TargetType="{x:Type Button}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Grid>
                            <Rectangle x:Name="rectangle" Fill="#FFB1B1FF" RadiusY="5" RadiusX="5"/>
                            <ContentPresenter x:Name="contentPresenter" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <!--按钮松开后  IsFocused为True 被激活 没被按下之前都是为False-->
                            <Trigger Property="IsFocused" Value="True">
                                <Setter Property="Fill" TargetName="rectangle" Value="#FFFFFBB1"/>
                                <Setter Property="Content" TargetName="contentPresenter" Value="Focus"/>
                            </Trigger>
                            <!--当按钮的IsDefaulted属性 为True 时生效  -->
                            <Trigger Property="IsDefaulted" Value="True">
                                <Setter Property="Fill" TargetName="rectangle" Value="#FFFF9B9B"/>
                                <Setter Property="Content" TargetName="contentPresenter" Value="IsDefaulted = True"/>
                            </Trigger>
                            <!--鼠标滑过 类似 Hover -->
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="Content" TargetName="contentPresenter" Value="MouseOver"/>
                                <Setter Property="Fill" TargetName="rectangle" Value="#FF91FB81"/>
                            </Trigger>
                            <!--按下 -->
                            <Trigger Property="IsPressed" Value="True">
                                <Setter Property="Fill" TargetName="rectangle" Value="#FFB1FFFF"/>
                                <Setter Property="Content" TargetName="contentPresenter" Value="Press"/>
                            </Trigger>
                            <!--当按钮的IsEnabled属性 为false 时生效 -->
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter Property="Content" TargetName="contentPresenter" Value="失活"/>
                                <Setter Property="Fill" TargetName="rectangle" Value="#FF727272"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>

    <Grid>
        <Button Content="Button" HorizontalAlignment="Left" Height="45.5" Margin="37,53.5,0,0" Style="{DynamicResource BtnStyle}" VerticalAlignment="Top" Width="151" IsEnabled="False"/>

    </Grid>
</Window>

时间: 2024-10-25 09:33:09

用 Blend 自动生成 自定义按钮控件 及设置触发器的相关文章

关于在storyboard拖按钮控件,手动设置代码不成功的问题

首先,在 storyboard 中拖拽一个按钮控件.设置好约束条件 然后把该控件作为属性,拖线到控制器当中 拿到控件属性后,可以在控制器当中用代码进行设置图片信息,我们以下载网络图片为例: 1 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 2 { 3 4 // 1.开启异步线程 5 dispatch_async(dispatch_get_global_queue(0, 0), ^{ 6 7

How to:Customize Action Controls 如何:自定义按钮控件

This example demonstrates how to customize the control that visualizes an Action in a UI. A custom Action will be created, allowing users to enter a date and filter the List View accordingly. The implemented Action will accept keyboard input, as well

android 自定义组合控件

自定义控件是一些android程序员感觉很难攻破的难点,起码对我来说是这样的,但是我们可以在网上找一些好的博客关于自定义控件好好拿过来学习研究下,多练,多写点也能找到感觉,把一些原理弄懂,今天就讲下自定义组合控件,这个特别适合在标题栏或者设置界面,看下面图: 就非常适合使用组合控件了,现在写一个玩玩: activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

自定义水晶按钮控件

namespace 自定义水晶按钮控件 { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 清理所有正在使用的资源. /// </summary> /// <param name="disposing&quo

Android自定义组合控件--底部多按钮切换

效果图: 现在市场上大多数软件都是类似于上面的结构,底部有几个按钮用于切换到不同的界面.基于OOP思想,我想把下面的一整块布局封装成一个类,也就是我们的自定义组合控件-底部多按钮切换布局,我把它叫做BottomLayout 看上面的布局,几个按钮横向排列,我们先看一下布局 最外面LinearLayout 方向 horizontal,然后5个weight相同的RelativeLayout,每个RelativeLayout里面有一个Button(用了显示选中状态)个ImageView(用来显示红点)

第三章 按钮控件的创建

一.前言 不知不觉一晃两个月过去,说来惭愧,在此期间alterto一直没有再研究DuiEngine.主要是因为DuiEngine的作者现在构建一个新的界面库soui,而笔者也一直处于观望状态,因为DuiEngine的作者说了以后可能就不维护DuiEngine了,要把主要的经历放在SOUI上.alterto顿时犹豫了,既然这样我还为DuiEngine做什么教程啊.于是这两个月的时间里一直都很犹豫,也没有再出DuiEngine相关的教程.现在看来这种焦躁对于一个优秀的程序猿来说着实不应该,这也正暴露

安卓自定义组合控件--toolbar

最近在学习安卓APP的开发,用到了toolbar这个控件, 最开始使用时include layout这种方法,不过感觉封装性不好,就又改成了自定义组合控件的方式. 使用的工具为android studio 2.2,简称AS吧 1.首先创建一个新的自定义控件,如下图.AS会创建3个文件,  一个java文件,一个layout中的xml文件(这个是布局文件),一个values中的xml文件(这个是属性文件) 2. 修改布局文件,代码如下.这里使用了RelativeLayout,  并且宽度和高度都选

(九)ASP.NET自定义用户控件(2)

http://www.cnblogs.com/SkySoot/archive/2012/09/04/2670678.html 用户控件 在 .NET 里,可以通过两种方式把自己的控件插入到 Web 窗体框架中: 用户控件:它是一小段页面,可以包括静态 HTML 代码和 Web 服务器控件.用户控件的好处是一旦创建了它,就可以在同一个 Web 应用程序的多个页面重用它.用户控件可以加入自己的属性,事件和方法. 自定义服务器控件:它是被编译的类,它通过编程生成自己的 HTML .服务器控件总是预编译

iOS--Quartz2D使用(自定义UIImageView控件、绘制基本图形)

自定义UIImageView控件 一.实现思路 Quartz2D最大的用途在于自定义View(自定义UI控件),当系统的View不能满足我们使用需求的时候,自定义View. 使用Quartz2D自定义View,可以从模仿系统的ImageView的使用开始. 需求驱动开发:模仿系统的imageview的使用过程 1.创建 2.设置图片 3.设置frame 4.把创建的自定义的view添加到界面上(在自定义的View中,需要一个image属性接收image图片参数->5). 5.添加一个image属