Compartilhar via


Espaços de nomes XAML e mapeamentos de espaços de nomes

Além disso, este tópico explica a presença e a finalidade dos dois mapeamentos de namespace de XML encontradas na marca raiz de cada Extensible Application Markup Language (XAML) arquivo. Ele também descreve como gerar mapeamentos semelhantes para usar elementos que são definidos em seu próprio código, e/ou em conjuntos de módulos (assemblies) separados.

Este tópico contém as seguintes seções.

  • WPF e declarações de espaço de nomes XAML
  • Mapeamento para classes e conjuntos de módulos (assemblies) personalizados
  • Mapeando espaços de nomes CLR em espaços de nomes XML em um conjunto de módulos (assembly)
  • Tópicos relacionados

WPF e declarações de espaço de nomes XAML

Dentro de declarações de namespace na marca raiz de muitos Extensible Application Markup Language (XAML) arquivos, você verá que há duas declarações de namespace de XML. A primeira declaração mapeia o espaço de nomes geral Windows Presentation Foundation (WPF) como o padrão:

xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"

A segunda declaração mapeia um espaço de nomes Extensible Application Markup Language (XAML) separado, mapeando-o (normalmente) para o prefixo x:.

xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"

A relação entre essas declarações que efetivamente é XAML é uma definição de linguagem e WPF é uma implementação que usa XAML sistema autônomo um idioma. A linguagem XAML especifica determinados elementos de linguagem que se presume estarem implementados de modo a obedecer o padrão, e cada um desses deve ser acessível pelas implementações do processador XAML lidando com o espaço de nomes XAML. The WPF implementação e seu modelo de programação pretendido geralmente usa o namespace de XML padrão para seu próprio APIse usa um prefixo separado mapeado para a sintaxe da marcação esperada na XAML. Por convenção esse prefixo é x:, e essa mesma convenção x: é seguida por modelos de projeto, exemplos de código e pela documentação dos recursos da linguagem neste SDK. O espaço de nomes XAML define vários recursos comumente usados que são necessários até mesmo para aplicativos WPF básicos. Por exemplo, para associar qualquer código com um arquivo XAML através de uma classe parcial, você deve nomear essa classe como o atributo x:Class no elemento raiz do arquivo XAML relevante. Ou, qualquer elemento, conforme definido em uma página XAML que você deseje acessar como um recurso com chave deveria ter o atributo x:Key definido no elemento em questão. Para obter mais informações sobre esses e outros aspectos de XAML consulte XAML Overview ou Terminologia de sintaxe XAML.

Mapeamento para classes e conjuntos de módulos (assemblies) personalizados

Você pode namespaces MAP XML para módulos (assemblies) usando uma série de tokens dentro de um xmlns declaração de prefixo, semelhante a como o padrão WPF e XAML espaços para nome são MAP ped prefixos.

A sintaxe recebe os nomes de símbolos e valores possíveis a seguir:

clr-namespace: O espaço de nomes common language runtime (CLR) declarado dentro do conjunto de módulos (assembly) que contém os tipos públicos a ser expostos como elementos.

assembly= O conjunto de módulos (assembly) que contém alguns ou todos os espaçoes de nomes CLR referenciados. Esse valor é normalmente apenas o nome do conjunto de módulos (assembly), não o caminho. O caminho para esse conjunto de módulos (assembly) deve ser estabelecido como um referência de projeto no arquivo de projeto que produz XAML compilado. Opcionalmente, para incorporar versionamento e autenticação de nome forte o valor pode, em vez disso, ser uma sequência de caracteres conforme definido por AssemblyName.

Observe que o caractere separando o símbolo clr-namespace de seu valor é de dois-pontos (:) enquanto o caractere separando o símbolo assembly de seu valor é um sinal de igual (=). O caractere a ser usado entre esses dois símbolos é um ponto-e-vírgula. Além disso, não inclua qualquer espaço em branco em qualquer lugar na declaração. Por exemplo:

xmlns:custom="clr-namespace:SDKSample;assembly=SDKSampleLibrary"

Mapeamento para conjuntos de módulos (assemblies) correntes

assembly pode ser omitido se a referência clr-namespace está sendo definida dentro do mesmo conjunto de módulos (assembly) que o código do aplicativo que faz referência às classes personalizadas. Ou, uma sintaxe equivalente para este caso é especificar assembly= sem nenhum símbolo string após o sinal de igual.

Classes personalizadas não podem ser usadas como o elemento raiz de uma página se definidas no mesmo conjunto de módulos (assembly). As classes parciais não precisam ser mapeadas; apenas classes que não a classe parcial da página do seu aplicativo precisam ser mapeadas se você pretende referenciá-las como elementos do XAML.

Mapeando espaços de nomes CLR em espaços de nomes XML em um conjunto de módulos (assembly)

WPF define um CLR atributo que é consumido por XAML processadores para mapear vários CLR espaços para nome para um único namespace de XML. Esse atributo XmlnsDefinitionAttribute é colocado no nível de conjunto de módulos (assembly) no código fonte que produz o assembly. O código fonte do conjunto de módulos (assembly) WPF usa esse atributo para mapear vários espaços de nomes comuns, como System.Windows e System.Windows.Controls para o espaço de nomes https://schemas.microsoft.com/winfx/2006/xaml/presentation.

The XmlnsDefinitionAttribute usa dois parâmetros: the XML nome do namespace e o CLR nome do namespace. Mais de um XmlnsDefinitionAttribute pode existir para mapear vários espaços de nomes CLR para o mesmo espaço de nomes XML. Depois que mapeados, membros desses espaços de nomes podem também ser referenciados sem qualificação completa se desejado, fornecendo a declaração using apropriada no código por trás da página da classe parcial. Para mais detalhes, consulte XmlnsDefinitionAttribute.

Consulte também

Conceitos

XAML Overview

Outros recursos

Noções básicas sobre espaços de nomes XML