在 winforms 中——有一个消息泵等待事件发生——当事件发生时——调用C#中的适当事件处理程序。
在 WPF 中还有 XAML。什么时候执行?C# 代码调用它还是调用 C# 代码?换句话说:事件是触发 C# 代码运行,还是触发 XAML 执行?
似乎(如果我错了,请纠正我)WPF 在来自 winforms 的事物流中并没有真正的不同。消息泵将调用 C# 事件处理程序,表单的初始化将在一个InitializeComponent
方法中完成。
不同之处在于InitializeComponent
WPF 表单的方法将包括解析 XAML 文件,因此本质上,开发人员使用 XAML 而不是 C# 来描述表单的初始外观。
(当然“C#”在这里可以与“VB”互换。)
这是有关 wpf 应用程序的一些信息,它是“生命周期”。 http://msdn.microsoft.com/en-us/library/ms743714.aspx
这里有一些关于 InitializeComponent 的信息以及它在 Xaml 解析中所起的作用。 InitializeComponent() 有什么作用,它在 WPF 中是如何工作的?
我会看看是否可以找到有关 Xaml 解析的更官方的帖子。
来自http://msdn.microsoft.com/en-us/library/aa970678.aspx
" XAML 文件由标记编译器解析。
为该 XAML 创建一个已编译的表示并将其复制到 obj\Release 文件夹。
新部分类的 CodeDOM 表示被创建并复制到 obj\Release 文件夹。
此外,还会为每个 XAML 文件生成一个特定于语言的代码文件。例如,对于 Visual Basic 项目中的 Page1.xaml 页面,会生成一个 Page1.g.vb;对于 C# 项目中的 Page1.xaml 页面,会生成一个 Page1.g.cs。文件名中的“.g”表示该文件是生成的代码,该代码具有标记文件的顶级元素(例如 Page 或 Window)的部分类声明。该类在 C# 中使用 partial 修饰符(在 Visual Basic 中为扩展)声明,以指示该类在别处有另一个声明,通常在代码隐藏文件 Page1.xaml.cs 中。"
XAML 解析器解析它并从中创建相应的 CLR 对象,这就是它。