理解代码隐藏和XAML

代码隐藏是一个术语,用于描述与将 XAML 页编译为应用程序时由 XAML 处理器创建的代码联接的代码。本主题描述代码隐藏的要求以及在 XAML 中的代码的可选内联代码机制。

先决条件
本主题假设您已阅读 XAML 概述并已基本了解 CLR 和面向对象的编程。

代码隐藏、事件处理程序和分部类要求
分部类必须派生自用作根元素的类的类型。您可以在代码隐藏的分部类定义中将派生留空,但编译的结果会假定页根作为分部类的基类,即使在没有指定的情况下也是如此(因为分部类的标记部分确实将页根指定为基)。

编写的事件处理程序必须是 x:Class 标识的命名空间中的分部类所定义的实例方法。您不能限定事件处理程序的名称来指示 XAML 处理器在其他类范围中查找该处理程序,也不能将静态方法用作事件处理程序。

事件处理程序必须与相应事件的委托匹配。

专门针对 Microsoft Visual Basic .NET 语言,您可以使用特定于语言的 Handles 关键字将处理程序与处理程序声明中的实例和事件关联,而不是在 XAML 中将处理程序附加到属性。但是,这一技术确实存在一些限制,因为 Handles 不支持 WPF 事件系统的所有特定功能,例如某些路由事件方案或附加事件。

x:Code
x:Code 是在 XAML 中定义的一种指令元素。x:Code 指令元素可以包含内联编程代码。内联定义的代码可以与同一页中的 XAML 进行交互。下面的示例阐释了内联 C# 代码。请注意,该代码位于 x:Code 元素内,并且必须包围在 内,以便针对 XML 对内容进行转义,这样 XAML 处理器(解释 XAML 架构或 WPF 架构时)不会试图按原义将内容解释为 XML。

 

内联代码限制
应注意对基于 XAML 的应用程序避免或限制使用内联代码。在体系结构和编码原理方面,保留标记和代码隐藏之间的独立性可以更显著地区分设计人员和开发人员这两个角色。

从更为技术性的角度看,为内联代码编写的代码更难编写,因为您总是要写入 XAML 页的生成的分部类中,并且只能使用默认的命名空间映射。因为不能添加 using 语句,因此必须完全限定您所进行的大量 API 调用。默认的 WPF 映射包括在 WPF 程序集中出现的大多数但并非全部的 CLR 命名空间;您必须完全限定对其他命名空间中包含的 API 的调用。此外,您还不能在内联代码中定义多个类,并且所有代码实体必须作为生成的分部类中的一个成员或变量存在。其他特定于语言的编程功能(例如宏或对全局变量或生成变量的 #ifdef)也不可用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值