x:FieldModifier (Directiva)

Modifica el comportamiento de la compilación de XAML para que los campos para referencias a objetos con nombre se definan con el acceso TypeAttributes.Public en lugar del comportamiento TypeAttributes.NotPublic predeterminado.

Uso de atributos XAML

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

Valores XAML

Value Descripción
Pública La cadena exacta que se pasa para especificar TypeAttributes.Public en lugar de TypeAttributes.NotPublic varía en función del lenguaje de programación subyacente que se use. Vea la sección Comentarios.

Dependencias

Si una producción XAML usa x:FieldModifier en cualquier lugar, el elemento raíz de esa producción XAML debe declarar una directiva x:Class.

Comentarios

x:FieldModifier no es relevante para declarar el nivel de acceso general de una clase o sus miembros. Solo es relevante para el comportamiento de procesamiento XAML cuando se procesa un objeto XAML determinado que forma parte de una producción XAML y se convierte en un objeto posiblemente accesible en el gráfico de objetos de una aplicación. De forma predeterminada, la referencia de campo para este objeto se mantiene privada, lo que impide que los consumidores de control modifiquen el gráfico de objetos directamente. En su lugar, se espera que los consumidores de control modifiquen el gráfico de objetos mediante patrones estándar habilitados por modelos de programación, como con la obtención de la raíz del diseño, las colecciones de elementos secundarios, las propiedades públicas dedicadas, etc.

El valor del atributo x:FieldModifier varía según el lenguaje de programación y su propósito puede variar en marcos específicos. La cadena que se va a usar depende de cómo implementa cada lenguaje los CodeDomProvider y los convertidores de tipos que devuelve para definir los significados de TypeAttributes.Public y TypeAttributes.NotPublic, y si ese lenguaje distingue entre mayúsculas y minúsculas.

  • Para C#, la cadena que se va a pasar para designar TypeAttributes.Public es public.

  • En Microsoft Visual Basic .NET la cadena que se pasa para designar TypeAttributes.Public es Public.

  • En C++/CLI no existen actualmente destinos para XAML; por lo tanto, no está definida la cadena que se va a pasar.

También puede especificar TypeAttributes.NotPublic (internal en C#, Friend en Visual Basic), pero especificar TypeAttributes.NotPublic es inusual porque NotPublic, ya que el comportamiento ya es el valor predeterminado.

TypeAttributes.NotPublic es el comportamiento predeterminado porque es poco frecuente que el código fuera del ensamblado que ha compilado el XAML necesite acceso a un elemento creado por XAML. La arquitectura de seguridad de WPF junto con el comportamiento de compilación XAML no declarará campos que almacenan instancias de elemento como públicas, a menos que se establezca el x:FieldModifier específicamente para permitir acceso público.

x:FieldModifier solo es relevante para elementos con una directiva x:Name, ya que ese nombre se usa para hacer referencia al campo una vez que se hace público.

De forma predeterminada, la clase parcial para el elemento raíz es pública; sin embargo, puede hacerla no pública mediante la directiva x:ClassModifier. La directiva x:ClassModifier también afecta al nivel de acceso de la instancia de la clase de elemento raíz. Puede colocar x:Name y x:FieldModifier en el elemento raíz, pero esto solo hace una copia pública de campo del elemento raíz, con el nivel de acceso de clase de elemento raíz verdadero controlado todavía por la directiva x:ClassModifier.

Vea también