Compartilhar via


Atributo x:Subclass

Modifies XAML compilation behavior in cases where x:Class is also provided. Especificamente, em vez de criar uma classe parcial baseada na classe de página, o x:Class fornecido é criado como uma classe intermediária, e então espera-se que a classe derivada fornecida seja baseada em x:Class.

Uso de atributos XAML

<object x:Class="namespace.classname" x:Subclass="subclassNamespace.subclassName">
   ...
</object>

Valores de XAML

namespace

Opcional. Especifica um namespace CLR que contenha classname. Se namespace é especificado, um ponto (.) separa namespace e classname.

classname

Obrigatório. Especifica o nome CLR da classe parcial que conecta o carregador XAML e seu código subjacente para aquela XAML. Consulte Comentários.

subclassNamespace

Opcional. Pode ser diferente de namespace desde que cada namespace possa resolver o outro. Especifica um namespace CLR que contenha subclassName. Se subclassName é especificado, um ponto (.) separa subclassNamespace e subclassName.

subclassName

Obrigatório. Especifica o nome CLR da subclasse.

Dependências

Atributo x:Class também deve ser fornecido no mesmo elemento, e aquele elemento deve ser o elemento raiz em uma página.

Comentários

O uso de x:Subclass destina-se principalmente a idiomas que não oferecem suporte a declarações parciais de classe.

x:Subclass pode ser declarado para qualquer elemento que é a raiz de uma página Extensible Application Markup Language (XAML), e / ou para a raiz de Application na definição de aplicativo, que já possui x:Class. Declarar x:Subclass em qualquer elemento que não seja uma página ou aplicativo raiz, ou especificá-lo onde nenhum x:Class existe, resultará em um erro em tempo de compilação.

Criar classes derivadas que funcionam corretamente para o cenário de x:Subclass é relativamente complexo. Talvez seja necessário examinar os arquivos intermediários (os arquivos .g produzidos na pasta obj do seu projeto, com nomes que incorporam os nomes de arquivo .xaml). Esses arquivos intermediários podem ajudá-lo a determinar a origem de determinadas construções de programação nas classes parciais associadas dentro do aplicativo compilado.

A classe usada como a x:Subclass não pode ser uma classe aninhada.

Event handlers in the derived class must be internal override (Friend Overrides in Microsoft Visual Basic .NET) in order to override the stubs for the handlers as created in the intermediate class during compilation. Caso contrário, as implementações da classe derivada ocultariam a implementação da classe intermediária e manipuladores de classe intermediários falhariam ao serem chamados.

Quando você define tanto x:Class quanto x:Subclass , você não precisa fornecer qualquer implementação para a classe referenciada por x:Class. Você só precisa dar a ela um nome por meio do atributo x:Class, de forma que o compilador tenha alguma orientação para a classe que ele cria nos arquivos intermediários (o compilador não escolhe um nome padrão neste caso). Você pode dar uma implementação que você deseja à classe x:Class, mas isso não está dentro de cenário típico para usar tanto x:Class quanto x:Subclass.

Consulte também

Conceitos

XAML e classes personalizadas

Referência

Atributo x:Class