Arquitetura analisador XAML livre
O Windows Presentation Foundation (WPF) Designer for Visual Studio carrega documentos extensível aplicativos Markup Language (XAML) e cria objetos WPF para exibição em Visual Studio.Erros encontrados durante o carregamento aparecem na janela de Lista de erros.
Fases O XAML livre
O WPF Designer carrega um documento XAML e cria uma árvore de sintaxe abstrata (AST) correspondente.O AST é um estrutura de dados que representa o XAML analisada.Ele é uma árvore finito rotuladas, direcionado em que os nós internos são rotulados por operadores, e os nós folha representam os operandos dos operadores de nó.A deixa ter operadores nullary, que são variáveis ou constantes.
Carregar um documento XAML ocorre em uma série de fases, conforme mostrado na tabela a seguir.
Fase O XAML livre |
Descrição |
---|---|
Verificação de sintaxe XML |
Mecanismo de varredura: Passagem lexical que verifica se há algo malformado, verifica se há caracteres inválidos e cria dos símbolos lexicais. Analisador: Cria a AST e executa a análise do emparelhar para certificar-se de que as Rótulos estão bem formados e equilibrada. |
Verificação de sintaxe XAML |
ConvertToXaml procura todos os tipos de, coloca as informações para o AST XAML, tipo e annotates o AST XAML. Validar executa verificação de erro e verifica as posições de nós na árvore. |
Modelo e objeto Instantiation |
Fase separado com um exame separado por meio de AST, que cria os objetos de edição do modelo e WPF. |
Nós que possuem erros de fases anteriores são marcadas como erradas e não são visitadas novamente durante as fases subsequentes.Se são erros nas fases Scanner e Parser, a fase de modelo e objeto Instantiation não é tentada.
Verificação de sintaxe XML
As fases de scanner e Parser verificar se o documento para carregar é um documento que não contém erros de sintaxe XML bem formado XML.Um exemplo de uma erro de sintaxe XML é uma marca <Button> sem um marca de fim </Button> correspondente.O analisador tentativas Recuperação de erro e devido a essa vários erros de pode ser reportado de uma tentativa única na análise do documento.
Verificação de sintaxe XAML
The parser traverses the XML AST in separate passes to verify that the document is a valid XAML document, which means that it conforms to the XAML XML schema and does not contain invalid XAML.Um exemplo do XAML inválido é um elemento que usa declarações de propriedade inválido, como <Button Foo="Mark">.
Esses passos incluem tipo resolução, para que informações, como nomes de elementos e nomes de propriedades, podem ser validadas o tipo de elemento.Por exemplo, o analisador verifica se Foo é uma propriedade no Button.Tipos ausentes causam erros.
O analisador tentativas Recuperação de erro e devido a essa vários erros de pode ser reportado de uma tentativa única na análise do documento.No entanto, nem todos os possíveis erros são relatados.Por exemplo, se um nome de elemento é escrito incorretamente e o nome da propriedade dentro desse elemento está incorreto, apenas o elemento de erro será relatado inicialmente, porque os nomes de propriedade não podem ser validados até que o elemento foi corretamente resolvido.
Observação: |
---|
Essa fase não inclui a validação dos valores de propriedade.Por exemplo, <Button Background="xBlue"/> não é ser detectado durante essa fase.Consulte Discussões posteriormente contidas neste tópico. |
Modelo e objeto Instantiation
No final da verificação de sintaxe, há um AST correspondente a XAML que um XAML-específicas DocumentTree que atua como um modo de exibição ou Cursor em que AST.
Nos últimos fase, o modelo e as instâncias de base são instanciadas e valores de propriedade convertido de sequências de caracteres e atribuídos.O analisador faz isso criando um DocumentTree usando a ModelDocumentTreeManager classe.Quando o DocumentTree é criada para a linguagem XAML, as instâncias WPF base também são criadas.Essas instâncias são usadas como o modo de exibição no designer.
Quando o modelo e instâncias são criadas, se uma exceção é gerada, a criação de todos os objetos para os filhos do nó no qual ocorreu o erro não será concluída.O modelo é construído para o restante da árvore.Isso expõe o maior número de erros como possíveis.
Por exemplo, no fragmento de código, <Button Background="Test"/>, TypeConverter para o tipo Brush tenta converter Test a uma Brush instância.Como Test é não é um valor Brush válido, O conversor de tipos gera uma exceção que para o processo de análise de nós filho, mas a exceção não afeta a análise do restante do documento.
Valores de propriedade são convertidos de sequências de caracteres quando o objeto proprietário é instanciado.Isso ocorre quando o objeto proprietário é usado no superfície de design.Muitos erros intervalo valor não são relatados até que o objeto pai é usado pelo designer.
Esse comportamento é semelhante à compilação WPF.O compilador WPF não validar ou tentar converter valores de atributo (propriedade) durante a compilação.Conversores tipo não são chamados até que a árvore de objetos é instanciado pelo WPF em tempo de execução.
Observação: |
---|
Para carregar recurso externo dicionários, há uma interação entre o modelo de edição e o analisador.Quando o modelo de edição deve carregar arquivos XAML adicionais, ele aciona uma operação de carregamento XAML. |
Mensagens de erro
Um tópico da Ajuda mensagem de erro WPF Designer descreve quais o XAML carregando fases gerado o erro.A tabela a seguir mostra a correspondência das mensagens para fases.
Fase carregamento XAML livre |
Mensagem de erro |
---|---|
Verificação de sintaxe XML |
Esse erro é gerado quando o arquivo XAML é não um documento XML bem formado. |
Verificação de sintaxe XAML |
Este erro é gerado quando o arquivo é um documento XML válido, mas não um documento XAML bem formado. |
Modelo e objeto Instantiation |
Esse erro é gerado quando o arquivo é um documento XAML bem-formado, mas contém uma ou mais diferenças de tipo . |