XAML é essencialmente um subconjunto de XML. Um dos principais benefícios de basear o XAML no XML é que ele pode ser analisado com as ferramentas existentes. E pode, em grande medida, embora os valores de atributo (sintaticamente não triviais) permaneçam na forma de texto e exijam uma análise adicional.
Existem duas alternativas principais para descrever uma GUI em uma linguagem derivada de XML. Uma é fazer o que o WinForms fez e descrevê-lo em código real. Existem inúmeros problemas com isso, embora não seja totalmente sem vantagens (uma questão para comparar o XAML com essa abordagem ). A outra alternativa importante é projetar uma sintaxe completamente nova, especificamente projetada para a tarefa em questão. Isso geralmente é conhecido como um idioma específico do domínio .
Então, em retrospectiva, e como uma lição para as gerações futuras, foi uma boa idéia basear o XAML em XML ou teria sido melhor como uma linguagem específica de domínio projetada sob medida? Se projetássemos uma estrutura de interface do usuário ainda melhor, devemos escolher XML ou uma DSL personalizada?
Como é muito mais fácil pensar positivamente sobre o status quo, especialmente um que é bastante apreciado pela comunidade, darei alguns exemplos de razões pelas quais a criação no XML pode ser considerada um erro.
Basear uma linguagem no XML tem uma coisa a oferecer: é muito mais fácil analisar (o analisador principal já está disponível), requer muito, muito menos trabalho de design, e analisadores alternativos também são muito mais fáceis de escrever para desenvolvedores de terceiros.
Mas a linguagem resultante pode ser insatisfatória de várias maneiras. É bastante detalhado. Se você alterar o tipo de algo, precisará alterá-lo na tag de fechamento. Tem muito pouco apoio para comentários; é impossível comentar um atributo. Existem limitações colocadas no conteúdo dos atributos pelo XML. As extensões de marcação precisam ser construídas "em cima" da sintaxe XML, não integradas de maneira profunda e agradável a ela. E, meu favorito pessoal, se você definir algo por meio de um atributo, use uma sintaxe completamente diferente do que definir exatamente a mesma coisa que uma propriedade de conteúdo.
Também se diz que, como todo mundo conhece XML, o XAML requer menos aprendizado. A rigor, isso é verdade, mas aprender a sintaxe é uma pequena fração do tempo gasto aprendendo uma nova estrutura de interface do usuário; são os conceitos da estrutura que tornam a curva íngreme. Além disso, as idiossincrasias de uma linguagem baseada em XML podem realmente aumentar a cesta de "necessidades de aprendizado".
Essas desvantagens são superadas pela facilidade de analisar? A próxima estrutura legal deve continuar a tradição ou investir tempo para projetar uma DSL impressionante que não possa ser analisada pelas ferramentas existentes e cuja sintaxe precisa ser aprendida por todos?
PS Nem todo mundo confunde XAML e WPF , mas alguns o fazem. XAML é uma coisa parecida com XML. O WPF é a estrutura com suporte para ligações, temas, aceleração de hardware e muitas outras coisas interessantes.