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,则不会生成字段,仅作为界面视觉元素存在,无法在后台直接操作。
Previous: XAML的附加属性和标记扩展
Next: 动态加载XAML