Classe de XAMLServices e o XAML básica, lendo ou gravando
XamlServicesuma classe é fornecida pelo.NET Framework XAML Services que pode ser usado em cenários XAML do endereço que não requerem acesso específico para o fluxo de nó XAML ou XAML digite obtidas em nós de informações do sistema. XamlServicesAPI pode ser resumida da seguinte maneira: Loadou Parse para oferecer suporte a um XAML carregar o caminho, Save para oferecer suporte a um XAML que salvar o caminho, e Transform para fornecer uma técnica que ingressa em um caminho de carregar e salvar o caminho. Transformpode ser usado para alterar de um esquema XAML para outra. Este tópico resume cada uma dessas classificações de API e descreve as diferenças entre as sobrecargas do método específico.
Este tópico contém as seguintes seções.
- Load
- Parse
- Save
- Transform
- Tópicos relacionados
Load
Várias sobrecargas de Load implementar a lógica completa para um caminho de carga. O caminho de carga utiliza o XAML em algum formulário e produz um fluxo de nó XAML. A maioria deles carregar o uso de caminhos XAML em uma forma codificada de arquivo de texto XML. No entanto, você também pode carregar um fluxo geral ou você pode carregar uma fonte XAML pré-carregado que já está contida em um local diferente XamlReader de implementação.
A sobrecarga mais simples para a maioria dos cenários é Load(String). Essa sobrecarga possui um fileName parâmetro que é simplesmente o nome de um arquivo de texto que contém o XAML para carregar. Isso é adequado para cenários de aplicativo como, por exemplo, aplicativos de confiança total tem serializado anteriormente o estado ou os dados para o computador local. Isso também é útil para estruturas de onde você está definindo o modelo de aplicativo e quiser carregar um dos arquivos padrão que define o comportamento do aplicativo, iniciando a interface do usuário ou outros recursos definidos pelo framework que usam XAML.
Load(Stream)tem situações semelhantes. Essa sobrecarga pode ser útil se você tiver o usuário escolher arquivos para carregar, porque um Stream é uma saída freqüente dos outros System.IO APIs que podem acessar um sistema de arquivo. Ou poderia acessar fontes XAML através de downloads assíncronas ou outras técnicas de rede que também fornecem um fluxo. (O carregamento de um fluxo ou origem do usuário selecionado pode ter implicações de segurança. Para obter mais informações, consulte Considerações de segurança do XAML.)
Load(TextReader)e Load(XmlReader) são sobrecargas que contam com leitores de formatos de versões anteriores do.NET Framework. Para usar essas sobrecargas, você deve já criou uma instância do leitor e usado seu Create API para carregar o XAML no formulário relevante (texto ou XML). Se você já moveu os ponteiros de registro em outros leitores ou executar outras operações com elas, isso não é importante. A lógica de caminho de carregamento de Load sempre processa a entrada inteira do XAML da raiz para baixo. Cenários para essas sobrecargas podem incluir o seguinte:
Onde você fornecer recursos de um editor de texto XML específicos existente de edição de XAML simple de superfícies de design.
Variantes do núcleo do System.IO cenários, onde você usar os leitores dedicados para abrir arquivos ou fluxos. Sua lógica realiza verificação rudimentar ou o processamento do conteúdo antes de tentar carregar como XAML.
Você pode carregar um arquivo ou fluxo ou você pode carregar um XmlReader, TextReader, ou XamlReader que quebrar seu XAML entrada carregando com APIs. o leitor
Internamente, cada uma das sobrecargas anteriores é, essencialmente, Load(XmlReader)e passado XmlReader é usado para criar uma nova XamlXmlReader.
O Load que fornece para cenários mais avançados de assinatura é Load(XamlReader). Você pode usar esta assinatura por um dos seguintes casos:
Você definiu sua própria implementação de um XamlReader.
Você precisa especificar as configurações de XamlReader que variam da configurações padrão.
Exemplos de configurações não padrão estiver definindo um destes procedimentos: AllowProtectedMembersOnRoot; BaseUri; IgnoreUidsOnPropertyElements; LocalAssembly; ValuesMustBeString. O leitor padrão de XamlServices é XamlXmlReader. Se você fornecer seu próprio XamlXmlReader, com as configurações, a seguir, são propriedades para definir não-padrão XamlXmlReaderSettings: CloseInput; SkipXmlCompatibilityProcessing; XmlLang; XmlSpacePreserve.
Parse
Parseé como Load porque ele é um caminho de carga API que cria um fluxo de nó XAML da entrada XAML. No entanto, nesse caso, a entrada XAML é fornecida diretamente como uma seqüência de caracteres que contém o XAML para carregar. Parseé uma abordagem leve que é mais apropriada para cenários de aplicativo que os cenários de framework. For more information, see Parse. Parseé realmente apenas um disposto Load(XmlReader) chamada envolve um StringReader internamente.
Save
Várias sobrecargas de Save implementar salvar Path. Todas as Save métodos todos levar a um gráfico de objeto como entrada e produzir saída como um fluxo de arquivos, ou XmlWriter/TextWriter instância.
Espera-se que o objeto de entrada seja o objeto raiz de representação do objeto. Isso pode ser a única raiz de um objeto de negócios, a raiz de uma árvore de objetos para uma página em um cenário de interface do usuário, na superfície de edição do trabalho de uma ferramenta de design ou outros conceitos de objeto raiz que são apropriados para cenários.
Em muitos cenários, a árvore de objetos que você salva está relacionada a uma operação de original carregado XAML com Load ou com outra API implementado por um modelo de estrutura/aplicativo. Pode haver diferenças capturadas na árvore de objetos devido a alterações de estado, onde o seu aplicativo capturados configurações de tempo de execução de um usuário, o XAML alterado porque seu aplicativo é um etc de superfície, de design do XAML de alterações. Com ou sem alterações, o conceito de primeiro carregamento do XAML da marcação e salvando-o novamente e comparando as duas formas de marcação XAML é conhecido como uma representação de ida e volta do XAML.
O desafio de salvamento e serializar um objeto complexo que é definido em um formulário de marcação é atingir um equilíbrio entre a representação completa sem perda de informações, em vez de verbosidade torna o XAML menos legível. Além disso, clientes diferentes para o XAML podem ter diferentes definições ou as expectativas de como esse equilíbrio deve ser definido. O Save APIs representam uma definição de saldo. O Save APIs usam o contexto de esquema XAML disponível e as características do padrão baseados em CLR do XamlType, XamlMember, e outros XAML intrínseca e XAML digite conceitos de sistema para determinar onde determinadas construções de fluxo XAML nó podem ser otimizadas quando eles são salvos volta marcação. Por exemplo, XamlServices Salvar caminhos pode usar o contexto de esquema padrão baseados em CLR XAML para resolver XamlType para objetos, pode determinar uma XamlType.ContentPropertye em seguida, pode omitir tags de elemento de propriedade quando eles gravam a propriedade conteúdo XAML do objeto.
Transform
TransformConverte ou transforma XAML vinculando um caminho de carregar e salvar o caminho como uma única operação. Um contexto de esquema diferente ou o sistema de tipos diferentes de backup pode ser usado para XamlReader e XamlWriter, que é o que influencia a como o XAML resultante é transformado. Isso funciona bem para operações de transformação ampla.
Para operações que dependem de examinando cada nó em um fluxo de nó XAML, você normalmente não usar Transform. Em vez disso, você precisará definir sua própria série de operação carga salvar caminho caminho e intrometer sua própria lógica. Em um dos caminhos, use um par de gravador de leitor/XAML XAML ao redor de seu próprio loop de nó. Por exemplo, carregar o XAML inicial usando XamlXmlReader e analisar os nós com sucessivas Read chamadas. Operando no nível de fluxo XAML nó você agora pode ajustar a nós individuais (tipos, membros, outros nós) para aplicar uma transformação ou deixe o nó como-está. Depois de enviar o nó em diante para o relevantes Write API de um XamlObjectWriter e elaborar o objeto. For more information, see Noções básicas sobre conceitos e estruturas de fluxo XAML nó.