Подтвердить что ты не робот

Почему XAML скомпилирован в BAML, а не в С#

Насколько я знаю, все, что сделано в XAML, можно сделать на С#.

Почему XAML скомпилирован в BAML, а не в С#? Не было бы более эффективным разбирать XAML во время компиляции и создавать соответствующий код С#?

4b9b3361

Ответ 2

Xaml является отдельным от кода С#, поскольку позволяет этим элементам быть "мягко закодированным". Если вы скомпилируете код Xaml в С#, вы проиграете этот признак, потому что теперь элементы пользовательского интерфейса, привязка данных, события и т.д. Теперь жестко закодированы в программе, и вам необходимо перекомпилировать всю программу, чтобы внести незначительные изменения в пользовательский интерфейс.

Сообщение в блоге, которое petr k. ссылки говорят, что Xaml фактически был скомпилирован в IL, но Baml теперь используется, потому что:

  • Он более безопасен (он не может быть выполнен напрямую) и
  • Baml может быть локализован (на разных языках) без необходимости перекомпиляции.

Ответ 3

В теории все XAML могут быть скомпилированы с эквивалентным С# (хотя BAML используется на практике).

Проверьте код XAML за генератором http://xamlgenerator.codeplex.com/.

Его плагин для Visual Studio 2010, который позволяет вам скомпилировать XAML в эквивалентный С#, его действительно интересно понять, как XAML скомпилирован в С#.