-
- XAML编译包括三项事情
- 将一个 XAML 文件转换为一种特殊的二进制格式
- 将转换好的内容作为二进制资源嵌入到正在被创建的程序集中
- 执行链接操作,将 XAML 和过程式代码自动连接起来
- 要编译 XAML 文件并将它与过程式代码混合,需要为 XAML 文件的根元素指定一个子类,可以用 XAML 语言命名空间中的 Class 关键字来完成。
- XAML 中的过程式代码
- XAML编译包括三项事情
2.8.2 编译 XAML
例如:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="MyNamespace.MyWindow">
......
</Window>
在一个独立的源文件中(但是在同一个项目中),可以定义一个子类,并添加任何想添加的成员。这个文件叫作代码隐藏文件。partial关键字很重要,因为类的实现是分布在多个文件中的。
namespace MyNamespace
{
partial class MyWindow : Window
{
// 一定要调用,这样才能加载 XAML 定义的内容!
InitializeComponent();
......
}
Any other members can go here...
}
使用 <x:Code><![CDATA[…]]></x:Code> 可以讲代码嵌入到 XAML文件中。当 XAML 编译时,x:Code 元素中的内容将被放到部分类的.g.cs 文件。
例如:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Button Click="button_Click">OK</Button>
<x:Code><![CDATA[
void button_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
]]></x:Code>
</Window>
由于代码隐藏文件的存在,采用这种方式在 XAML 文件中编写代码是不被推荐的。