当前位置: 首页 > news >正文

四平网站建设404页面对网站的好处及设置方法郑州网站推

四平网站建设404页面对网站的好处及设置方法,郑州网站推,邵阳网站建设制作,做网站一个月30ip本文内容 先决条件附加事件语法WPF 如何实现附加事件附加事件方案处理附加事件定义自定义附加事件引发 WPF 附加事件 Extensible Application Markup Language (XAML) 定义了一种语言组件和称为附加事件的事件类型。 附加事件可用于在非元素类中定义新的 路由事件#xff0c…本文内容 先决条件附加事件语法WPF 如何实现附加事件附加事件方案处理附加事件定义自定义附加事件引发 WPF 附加事件 Extensible Application Markup Language (XAML) 定义了一种语言组件和称为附加事件的事件类型。 附加事件可用于在非元素类中定义新的 路由事件并在树中的任何元素上引发该事件。 为此必须将附加事件注册为路由事件并提供支持附加事件功能的特定 支持代码。 由于附加事件注册为路由事件因此在元素上引发时它们会通过元素树传播。 1、先决条件 本文假定你已基本了解 Windows Presentation Foundation (WPF) 路由事件并已阅读路由事件概述 和WPF 中的 XAML。 若要理解本文中的示例还应当熟悉 XAML 并知道如何编写 WPF 应用程序。 2、附加事件语法 在 XAML 语法中附加事件由其事件名称及其所有者类型指定格式为 owner type.event name。 因为事件名称是使用具有其所有者类型的名称限定的所以语法允许将该事件附加到可以实例化的任何元素。 此语法也适用于附加到沿事件路由的任意元素的常规路由事件的处理程序。 以下 XAML 属性语法将 AquariumFilter.Clean 附加事件的 AquariumFilter_Clean 处理程序附加到 aquarium1 元素 aqua:Aquarium x:Nameaquarium1 Height300 Width400 aqua:AquariumFilter.CleanAquariumFilter_Clean/在此示例中aqua: 前缀是必需的因为 AquariumFilter 和 Aquarium 类存在于不同的公共语言运行时 (CLR) 命名空间和程序集中。 还可以在代码隐藏中附加已附加事件的处理程序。 为此请在处理程序应附加到的对象上调用 AddHandler 方法并将事件标识符和处理程序作为参数传递给此方法。 3、WPF 如何实现附加事件 WPF 附加事件作为由 RoutedEvent 字段支持的路由事件实现。 因此附加事件在引发后会通过元素树传播。 通常引发附加事件的对象称为事件源是系统或服务源。 系统或服务源不是元素树的直接部分。 对于其他附加事件事件源可能是树中的元素例如复合控件中的组件。 4、附加事件方案 在 WPF 中附加事件用于具有服务级别抽象的某些功能区域。 例如WPF 使用由静态 Mouse 或 Validation 类启用的附加事件。 与服务交互或使用服务的类可以使用附加事件语法与事件交互或者将附加事件显示为路由事件。 后一个选项是类如何集成服务功能的一部分。 WPF 输入系统广泛使用附加事件。 但是几乎所有附加事件都通过基本元素显示为等效的非附加路由事件。 每个路由输入事件都是基本元素类的一个成员并使用 CLR 事件“包装器”提供支持。 你很少会直接使用或处理附加事件。 例如与在 XAML 或代码隐藏中使用附加事件语法相比通过等效 UIElement.MouseDown 路由事件处理 UIElement 上的基础附加 Mouse.MouseDown 事件更为容易。 附加事件通过启用输入设备的未来扩展来服务于体系结构目的。 例如新的输入设备只需引发 Mouse.MouseDown 即可模拟鼠标输入并且无需从 Mouse 派生即可执行此操作。 此方案会涉及事件的代码处理而附加事件的 XAML 处理则与此方案无关。 5、处理附加事件 编码和处理附加事件的过程与非附加路由事件的基本相同。 如 前文所述现有的 WPF 附加事件通常不是专门用于在 WPF 中进行直接处理。 通常附加事件的用途是使复合控件中的元素能够向控件中的父元素报告其状态。 在这种情况下事件在代码中引发并依赖于相关父类中的类处理。 例如Selector 中的项应引发 Selected 附加事件该事件随后由 Selector 类进行类处理。 Selector 类可能将 Selected 事件转换为 SelectionChanged 路由事件。  6、定义自定义附加事件 如果从常见的 WPF 基类派生可以通过在类中包含两个访问器方法来实现自定义附加事件。 这些方法包括 Add事件名称Handler 方法其中第一个参数是附加事件处理程序的元素第二个参数是要添加的事件处理程序。 方法必须是 public 和 static没有返回值。 该方法调用 AddHandler 基类方法将路由事件和处理程序作为参数传入。 此方法支持 XAML 属性语法用于将事件处理程序附加到元素。 此方法还可实现对附加事件的事件处理程序存储的代码访问。 Remove事件名称Handler 方法其中第一个参数是附加事件处理程序的元素第二个参数是要移除的事件处理程序。 方法必须是 public 和 static没有返回值。 该方法调用 RemoveHandler 基类方法将路由事件和处理程序作为参数传入。 此方法允许代码访问附加事件的事件处理程序存储。 WPF 将附加事件作为路由事件实现因为 RoutedEvent 的标识符是由 WPF 事件系统定义的。 另外路由一个事件也是对附加事件的 XAML 语言级概念的自然扩展。 此实现策略将附加事件的处理限制为 UIElement 派生类或 ContentElement 派生类因为只有这些类才具有 AddHandler 实现。 例如以下代码定义了 AquariumFilter 所有者类不是元素类上的 Clean 附加事件。 代码将附加事件定义为路由事件并实现所需的访问器方法。 public class AquariumFilter {// Register a custom routed event using the bubble routing strategy.public static readonly RoutedEvent CleanEvent EventManager.RegisterRoutedEvent(Clean, RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(AquariumFilter));// Provide an add handler accessor method for the Clean event.public static void AddCleanHandler(DependencyObject dependencyObject, RoutedEventHandler handler){if (dependencyObject is not UIElement uiElement)return;uiElement.AddHandler(CleanEvent, handler);}// Provide a remove handler accessor method for the Clean event.public static void RemoveCleanHandler(DependencyObject dependencyObject, RoutedEventHandler handler){if (dependencyObject is not UIElement uiElement)return;uiElement.RemoveHandler(CleanEvent, handler);} }返回附加事件标识符的 RegisterRoutedEvent 方法与用于注册非附加路由事件的方法相同。 附加和非附加路由事件均已注册到集中式内部存储。 此事件存储实现启用了 路由事件概述中介绍的“事件即界面”概念。 与用于支持非附加路由事件的 CLR 事件“包装器”不同附加事件访问器方法可以在并非派生自 UIElement 或 ContentElement 的类中实现。 这很可能是因为附加事件支持代码调用被传递到 UIElement 实例上的 UIElement.AddHandler 和 UIElement.RemoveHandler 方法。 相比之下非附加路由事件的 CLR 包装器直接在所属类上调用这些方法因此该类必须派生自 UIElement。 7、引发 WPF 附加事件 引发附加事件的过程实质上与引发非附加路由事件的过程相同。 通常代码不需要引发任何现有的 WPF 定义的附加事件因为这些事件遵循常规的“服务”概念模型。 在该模型中服务类如 InputManager负责引发 WPF 定义的附加事件。 当使用 WPF 基于路由事件 的附加事件的 WPF 模型定义自定义附加事件时使用 UIElement.RaiseEvent 方法即可在任何 UIElement 或 ContentElement 上引发附加事件。 引发路由事件时无论它是否附加都需要将元素树中的元素指定为事件源。 然后该源将报告为 RaiseEvent 调用方。 例如要在 aquarium1 上引发 AquariumFilter.Clean 附加路由事件 aquarium1.RaiseEvent(new RoutedEventArgs(AquariumFilter.CleanEvent));在上述示例中aquarium1 是事件源。
http://www.hkea.cn/news/14495396/

相关文章:

  • 云南做网站哪家好免费编程软件手机版
  • 郑州网站建设没效果国际域名和国内域名区别
  • 东莞市专注网站建设怎么样建设外贸购物网站
  • 学校的网站建设和资源库建设wordpress怎么设计主题
  • 试述网站建设的流程.毕业设计网站做几个页面
  • 婚纱网站策划书模板电脑端游排行榜前十名网络游戏
  • 省 两学一做 专题网站昆山教育平台网站建设
  • 网站添加wordpress外包公司
  • 虚拟主机 部署网站吗建设专业网站价格
  • 珠海做网站多少钱彩虹网站建设
  • 建设部网站官网证书编号保定清苑住房和城乡建设局网站
  • 企业建站 wordpress创新网站建设工作室
  • 网站建设使用的什么网站快速开发平台
  • 免费门户网站源码nginx网站开发
  • win2003做网站建公司网站需要哪些资料
  • 创意网站交互营销外包团队
  • 智慧农业网站建设网站建设参考文献目录
  • 北京赵公口网站建设建材网中国建材第一网
  • 做校园网站 怎么备案公众号开发者id在哪
  • 网站建设的基本特点网站集约化建设建议
  • 石嘴山网站建设杭州公司注册流程及费用
  • 网络网站如何推广现在阳性最新情况
  • 上海技术网站建设南宁网站seo
  • 企业型网站建设哪家比较好wordpress不用ftp下载文件
  • 在自己电脑建设网站安徽公共资源交易中心
  • 温州优化网站wordpress数据库批量替换域名
  • 域名怎么解析到网站chat gpt 国内版
  • 企业网站制作及cms技术icp许可证个人网站
  • 松原做网站平台做寻亲网站的理由
  • 网站建设html模板下载国外自助建站系统