Partilhar via


x:Diretiva FieldModifier

Modifica o comportamento de compilação XAML para que os campos para referências de objeto nomeado sejam definidos com acesso TypeAttributes.Public em vez do comportamento padrão TypeAttributes.NotPublic.

Uso de atributos XAML

<object x:FieldModifier="Public".../>

Valores XAML

Valor Descrição
Pública A cadeia de caracteres exata que você passa para especificar TypeAttributes.Public versus TypeAttributes.NotPublic varia, dependendo da linguagem de programação code-behind usada. Ver Observações.

Dependências

Se uma produção XAML usar x:FieldModifier em qualquer lugar, o elemento raiz dessa produção XAML deverá declarar uma diretiva x:Class.

Comentários

x:FieldModifier não é relevante para declarar o nível geral de acesso de uma classe ou dos seus membros. É relevante apenas para o comportamento de processamento XAML quando um determinado objeto XAML que faz parte de uma produção XAML é processado e se torna um objeto potencialmente acessível no gráfico de objetos de um aplicativo. Por padrão, a referência de campo para tal objeto é mantida privada, o que impede que os consumidores de controle modifiquem o gráfico de objeto diretamente. Em vez disso, espera-se que os consumidores de controle modifiquem o gráfico de objetos usando padrões padrão habilitados por modelos de programação, como a obtenção da raiz de layout, as coleções de elementos filho, as propriedades públicas dedicadas e assim por diante.

O valor para o atributo x:FieldModifier varia de acordo com a linguagem de programação, e sua finalidade pode variar em estruturas específicas. A cadeia de caracteres a ser usada depende de como cada idioma implementa seu CodeDomProvider e dos conversores de tipo que retorna para definir os significados para TypeAttributes.Public e TypeAttributes.NotPublice se esse idioma diferencia maiúsculas de minúsculas.

  • Para C#, a cadeia de caracteres a ser passada para designar TypeAttributes.Public é public.

  • Para o Microsoft Visual Basic .NET, a cadeia de caracteres a ser passada para designar TypeAttributes.Public é Public.

  • Para C++/CLI, atualmente não existem destinos para XAML; portanto, a cadeia de caracteres a ser passada é indefinida.

Você também pode especificar TypeAttributes.NotPublic (internal em C# Friend no Visual Basic), mas especificar TypeAttributes.NotPublic é incomum porque NotPublic como o comportamento já é o padrão.

TypeAttributes.NotPublic é o comportamento padrão porque é pouco frequente que o código fora do assembly que compilou o XAML precise de acesso a um elemento criado por XAML. A arquitetura de segurança do WPF juntamente com o comportamento de compilação XAML não declarará campos que armazenam instâncias de elementos como públicos, a menos que você defina especificamente o x:FieldModifier para permitir acesso público.

x:FieldModifier só é relevante para elementos com uma diretiva x:Name porque esse nome é usado para fazer referência ao campo depois que ele é público.

Por padrão, a classe parcial para o elemento raiz é pública; no entanto, você pode torná-lo não público usando o x:ClassModifier Directive. O diretiva x:ClassModifier também afeta o nível de acesso da instância da classe de elemento raiz. Você pode colocar x:Name e x:FieldModifier no elemento raiz, mas isso só faz uma cópia de campo público do elemento raiz, com o nível de acesso da classe do elemento raiz verdadeiro ainda controlado por diretiva x:ClassModifier.

Ver também