Extensão de Marcação x:Static
Faz referência a qualquer entidade de código estático por valor é definida em um Common Language Specification (CLS)compatível com forma. A propriedade estática que é referenciada pode ser usada para fornecer o valor de uma propriedade em XAML.
XAML Attribute Usage
<object property="{x:Static prefix:typeName.staticMemberName}" .../>
XAML Values
prefix |
Optional. Um prefixo que se refere a um namespace XAML mapeado, não-padrão. prefixé mostrado explicitamente no uso do porque você raramente faz referência a propriedades estáticas que vêm de um namespace XAML padrão. Consulte comentários. |
typeName |
Required. O nome do tipo que define o membro estático desejado. |
staticMemberName |
Required. The name of the desired static value member (a constant, a static property, a field, or an enumeration value). |
Comentários
A entidade de código que é referenciada deve ser um destes procedimentos:
Uma constante.
Uma propriedade estática
Um campo
Um valor de enumeração
Especificando a qualquer outra entidade de código, como, por exemplo, uma propriedade não estática, causa um erro de tempo de compilação, se o XAML é compilado de marcação ou uma exceção de análise em tempo de carregamento do XAML.
Você pode fazer x:Static referências a campos estáticos ou propriedades que não estão em namespace XAML padrão para o documento atual do XAML; No entanto, isso requer um mapeamento de prefixo. Namespaces XAML quase sempre são definidos no elemento raiz do documento XAML.
As operações de pesquisa para propriedades estáticas podem ser executadas por.NET Framework XAML Services e seus leitores XAML e gravadores XAML, quando estiverem executando com o contexto de esquema XAML padrão. Neste contexto de esquema XAML pode usar a reflexão do CLR para fornecer os valores estáticos necessários para a construção do objeto gráfico. O typeName você especificar é realmente um XAML tipo nome, não um nome de tipo CLR, embora esses são essencialmente o mesmo nome ao usar o contexto de esquema XAML padrão ou ao usar todos os existentes baseados em CLR XAML-implementação de frameworks.
Tenha cuidado ao fazer x:Static referências que são não diretamente do tipo de valor de. uma propriedade No XAML o processamento de seqüência, fornecida valores a partir de uma extensão de marcação não invoca a conversão de valor adicional. Isso é verdadeiro mesmo se sua x:Static referência cria uma seqüência de texto e a conversão de uma valor para os valores de atributo com base na seqüência de caracteres de texto geralmente ocorre para esse membro específico ou para quaisquer valores de membro do tipo de retorno.
Attribute syntax is the most common syntax used with this markup extension. The string token provided after the x:Static identifier string is assigned as the Member value of the underlying StaticExtension extension class.
Existem dois outros usos XAML que são tecnicamente possíveis. No entanto, esses usos são menos comuns, porque são desnecessariamente verbose:
Sintaxe de elemento de objeto: <x:Static Member="prefix:typeName.staticMemberName" .../>
Sintaxe de atributo com a propriedade de membro explícita para a seqüência de inicialização: <object property="{x:Static Member=prefix:typeName.staticMemberName}" .../>
No.Implementação de serviços de XAML do NET Framework, o tratamento para a extensão de marcação é definido pelo StaticExtension classe.
x:Static is a markup extension. Todas as extensões de marcação no uso do XAML a { e } caracteres em sua sintaxe de atributo, que é a convenção pelo qual um processador XAML reconhece que a extensão de marcação deve fornecer um valor. For more information about markup extensions, see Extensões de marcação de visão geral do XAML.
Notas de uso do WPF
Namespace XAML padrão, você pode usar para programação do WPF não contém as propriedades estáticas muitos úteis e a maioria das propriedades estáticas útil têm suporte como, por exemplo, os conversores de tipo que facilitam o uso sem a necessidade de {x:Static} . Para propriedades estáticas, você deve mapear um prefixo para um namespace XAML se uma das seguintes opções for verdadeira:
Você está fazendo referência a um tipo que existe no WPF, mas não é parte do namespace padrão XAML para WPF (https://schemas.microsoft.com/winfx/2006/xaml/presentation). This is a fairly common scenario for using x:Static. Por exemplo, você pode usar um x:Static referência com um mapeamento de namespace XAML para o System o assembly mscorlib e de namespace CLR para fazer referência a propriedades estáticas da Environment classe.
You are referencing a type from a custom assembly.
Você está fazendo referência um tipo que existe em um assembly do WPF, mas que é do tipo em um namespace CLR que não foi mapeado para ser parte do namespace XAML do WPF padrão. O mapeamento dos namespaces do CLR no namespace padrão XAML para WPF é realizado pelas definições em vários assemblies do WPF (para obter mais informações sobre esse conceito, consulte Namespaces XAML e o mapeamento de Namespace para WPF XAML). Namespaces CLR não-mapeado poderá existir se o namespace CLR é composto principalmente de definições de classe que não são geralmente destinadas a XAML, como System.Windows.Threading.
Para obter mais informações sobre como usar os prefixos e namespaces XAML para WPF, consulte Namespaces XAML e o mapeamento de Namespace para WPF XAML.