XAML的事件与编译原理

Windows10应用开发-XAML的事件与编译原理

1. XAML 事件基础

  • 核心分工:XAML 主要承担界面的显示和布局,业务逻辑交由后置代码(Code-Behind)处理。
  • 类关联:通过根节点上的 x:Class 属性指定当前 XAML 对应的 .cs 类名(如 MainPage),建立界面与逻辑的绑定。
  • 事件语法:在 XAML 中声明事件的基础语法为 <元素对象 事件名称="事件处理方法名称" />。
  • 代码示例(两个按钮共用同一个点击事件): <Canvas HorizontalAlignment="Left" Height="100" Margin="80,500,0,0" VerticalAlignment="Top" Width="100"> <Button Name="button1" Canvas.Top="10" Canvas.Left="12" Click="button1_Click">北盟网校</Button> <Button Name="button2" Canvas.Top="10" Canvas.Left="12" Click="button1_Click">北盟网校2</Button> </Canvas>
    注:Click="button1_Click" 会在对应的 .xaml.cs 文件中寻找 button1_Click 方法执行。

2. 编译机制与隐藏文件(partial 类原理)

  • 分部类(partial):.xaml.cs 中定义的类是 partial(部分类),它的另一部分由编译器自动生成并隐藏在项目中。
  • g.cs 文件(生成代码):
    • 编译后会在 obj\debug 目录下生成对应的 .g.cs 文件(如 MainPage.g.cs 对应 MainPage.xaml)。
    • 核心作用:包含控件的内部字段声明(依赖 x:Name 属性自动调用 FindName 关联控件实例),并定义了 InitializeComponent 方法(用于加载 XAML 树和绑定事件)。
    • 命名含义:g 代表 generated(生成)。
    • 生成时机:仅在成功编译后生成。
  • g.i.cs 文件(智能感应文件):
    • 位于 obj\debug 目录下(如 MainPage.g.i.cs)。
    • 核心作用:为 Visual Studio 提供实时代码提示(智能感应)。
    • 命名含义:i 代表 intellisense(智能感应)。
    • 生成时机:在创建或修改 XAML 文件时即时生成/改变(无需等待完整编译)。

3. 控件字段生成规则

  • 在 XAML 中声明控件时,只要设置了 x:Name="xxx" 属性,g.cs 中就会自动生成对应的内部字段,允许在后台 C# 代码中直接通过 xxx 访问该控件。
  • 若未设置 x:Name,则不会生成字段,仅作为界面视觉元素存在,无法在后台直接操作。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注