WPF学习笔记(二)----Events, Commands

1、配置事件和事件处理(Configuring Events and Event Handling)

事件在WPF编程是明显不同于那些在传统的Windows窗体的编程。WPF使用路由事件,可以存在多个控制和多个处理程序。路由事件允许您添加多个层次的复杂性和复杂的用户界面,响应用户输入。学习路由事件,包括如何处理一个路由事件,定义和注册一个新的路由事件,处理应用程序生命周期事件,并使用EventManager类。

1.1 下面使用一个实例说明如何定义、注册、封装路由事件

public abstract class ButtonBase: ContentControl,...
{
    //定义事件
    public static readonly RoutedEvent ClickEvent;    
    //注册事件(需要指定事件的名称、路由类型、事件处理程序语法的委托以及拥有该事件的类)
    static ButtonBase()
    {
        ButtonBase.ClickEvent=EventManager.RegisterRoutedEvent("Click",RoutingStrategy.Bubble,
        typeof(RoutedEventHandler),typeof(ButtonBase));
        ...
    }    
    //事件的封装    
    public event RoutedEventHandler Click
    {
        add
        {
            base.AddHandler(ButtonBase.ClickEvent,value);
        }
        remove
        {
            base.RemoveHandler(ButtonBase.ClickEvent,value);
        }
    }    
}

1.2、三种路由事件:直接路由事件、冒泡路由事件、隧道路由事件

直接路由事件:与普通的.net事件类似,它们源于同一个元素,不传递给其他元素。例如,MouseEnter事件(当鼠标移到元素时发生)是直接路由事件

冒泡路由事件:在包含层次中向上传递的事件,例如事件由某一元素引发,然后被该元素的父元素引发,然后被父元素的父元素引发,一直到WPF到达元素树的顶部为止

隧道路由事件:在包含层次中向下传递的事件,它为控件的预览事件提供了机会。

RoutedEventArgs类的属性

.Source :指示引发了事件的对象

.OriginalSource: 指示了最初是什么对象引发了事件

.RoutedEvent:通过事件处理程序为触发的事件提供RountEvent对象

.Handled: 属性值为true时,该属性终止事件的冒泡或者隧道过程。

1.3、EventManager类

EventManager 是管理所有WPF 路由事件注册的静态类

EventManager 类的方法:

.GetRoutedEvents:返回应用程序中被注册的所有的路由事件

.GetRoutedEventsForOwner:返回应用程序中所有被注册的特殊元素的路由事件

.RegisterClassHandler:注册一个类级别的事件处理程序

.RegisterRoutedEvent: 注册一个实例级别的事件处理程序

2、配置命令(Configuring Commands)

WPF 命令增加了两个重要的特性,1)、将事件委托到适当的命令;2)、使控件的启用状态和相应命令的状态保持同步。

如图所示:

WPF对以下几个方面没有提供任何支持:

.命令跟踪(保留最近命令历史)

.“可撤销命令”

.具备状态并可处于不同模式的命令。

 

转载于:https://www.cnblogs.com/20141209cy/p/4201654.html

WPF是一种创建Windows应用程序的框架,它提供了许多可视化组件和工具,使得应用程序的创建变得更加容易和快捷。本次实例的项目是一个简单的点餐系统,它包含了以下几个主要模块: 1. 登录界面 用户需要输入用户名和密码才能成功登录,登录成功后,程序将跳转到订单界面。如果用户输入的用户名或密码不正确,则会提示错误信息。 2. 菜单界面 在菜单界面,用户可以查看所有可供选择的菜品列表,并可以选择需要点的菜品。每个菜品都可以显示它的描述、价格以及图片,用户可以在右侧的“购物车”中查看他们已经点的菜品以及总价。 3. 订单界面 订单界面用于显示用户已经点的菜品信息以及订单的总价。用户在确认购物车中的菜品信息无误后,可以点击“去结算”按钮,进入支付界面。 4. 支付界面 在支付界面,用户需要选择支付方式并输入对应的支付信息,如信用卡号、有效期和验证码等。支付成功后,程序将返回订单界面并提示用户支付成功。 通过使用WPF的鲁棒性、可扩展性和易用性,开发者可以在编写这样的小项目时得到很大的好处。开发者可以使用大量的分层和组件化方法,使他们的代码变得易于管理和扩展。此外,通过使用WPF的数据绑定和样式,开发者可以使程序的UI更加一致和响应式。总的来说,使用WPF编写点餐系统可以使开发者轻松地创建一个功能齐全、易于使用并具有良好用户体验的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值