Ответ 1
Это сообщение в блоге должно предоставить исчерпывающий ответ: http://blogs.microsoft.co.il/blogs/tomershamam/archive/2007/05/25/Compiled-XAML-3D00-BAML-not-IL.aspx
Насколько я знаю, все, что сделано в XAML, можно сделать на С#.
Почему XAML скомпилирован в BAML, а не в С#? Не было бы более эффективным разбирать XAML во время компиляции и создавать соответствующий код С#?
Это сообщение в блоге должно предоставить исчерпывающий ответ: http://blogs.microsoft.co.il/blogs/tomershamam/archive/2007/05/25/Compiled-XAML-3D00-BAML-not-IL.aspx
Xaml является отдельным от кода С#, поскольку позволяет этим элементам быть "мягко закодированным". Если вы скомпилируете код Xaml в С#, вы проиграете этот признак, потому что теперь элементы пользовательского интерфейса, привязка данных, события и т.д. Теперь жестко закодированы в программе, и вам необходимо перекомпилировать всю программу, чтобы внести незначительные изменения в пользовательский интерфейс.
Сообщение в блоге, которое petr k. ссылки говорят, что Xaml фактически был скомпилирован в IL, но Baml теперь используется, потому что:
В теории все XAML могут быть скомпилированы с эквивалентным С# (хотя BAML используется на практике).
Проверьте код XAML за генератором http://xamlgenerator.codeplex.com/.
Его плагин для Visual Studio 2010, который позволяет вам скомпилировать XAML в эквивалентный С#, его действительно интересно понять, как XAML скомпилирован в С#.