WPF中的C#和XAML - 它们如何协同工作?

时间:2012-06-17 20:08:15

标签: c# wpf xaml

在winforms中 - 有一个消息泵等待事件发生 - 当发生这种情况时 - 调用 C# 中的相应事件处理程序。

在WPF中还有XAML。什么时候执行? C#代码是调用它还是调用C#代码?换句话说:事件是否触发C#代码运行,还是触发XAML执行?

3 个答案:

答案 0 :(得分:2)

似乎(请纠正我,如果我错了)WPF与winforms的流程并没有什么不同。消息泵将调用C#事件处理程序,表单的初始化将以InitializeComponent方法完成。

不同之处在于WPF表单的InitializeComponent方法将包括解析XAML文件,因此开发人员基本上使用XAML而不是C#来描述表单的初始外观。

(当然“C#”可以与“VB”互换。)

答案 1 :(得分:1)

以下是有关wpf应用程序及其“生命周期”的一些信息。 http://msdn.microsoft.com/en-us/library/ms743714.aspx

这里有一些关于InitializeComponent的信息以及它在Xaml解析中扮演的角色。 What does InitializeComponent() do, and how does it work in 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#(在Visual Basic中扩展)中的partial修饰符声明该类,以指示该类的其他声明,通常在代码隐藏文件Page1.xaml.cs中。 “

答案 2 :(得分:0)

XAML-Parser解析它并从中创建相应的CLR对象,即它。