2009-09-14 127 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