2009-09-14 128 views
26

据我所知,所有在XAML中完成的工作都可以在C#中完成。为什么将XAML编译为BAML而不是C#

为什么XAML是在BAML中编译而不是在C#中编译的?在编译时分析XAML并创建相应的C#代码会更有效吗?

回答

12

Xaml与c#代码是分开的,因为它允许这些元素被“软编码”。如果您将Xaml编译为C#代码,则可以击败此特性,因为现在UI元素,数据绑定,事件等现在已被硬编码到程序中,并且您需要重新编译整个程序以对其进行轻微更改用户界面。

该博客文章石油k。引用说的XAML实际上是在同一时间编译成IL,但BAML现在使用的原因是:

  1. 更安全(它不能被直接执行),并
  2. BAML可以是局部的(不同的语言)无需重新编译。
0

从理论上讲,所有的XAML可以编译成等价的C#(BAML虽然在实践中使用)。

查看发生器后面的XAML代码http://xamlgenerator.codeplex.com/

它是Visual Studio 2010的一个插件,它允许您将XAML编译为等效的C#,对于如何将XAML编译到C#中感觉非常有趣。

+1

这看起来不像问题的答案。 – 2014-11-11 08:21:33