x:FieldModifier (Directiva)
Modifica el comportamiento de compilación de XAML, de tal forma que los campos correspondientes a las referencias de objetos con nombre se definen con el acceso TypeAttributes.Public, en lugar de definirse con el comportamiento TypeAttributes.NotPublic predeterminado.
Uso de atributos XAML
<object x:FieldModifier="Public".../>
Valores XAML
Public |
La cadena exacta que se debe pasar para especificar el valor TypeAttributes.Public en lugar de TypeAttributes.NotPublic varía en función del lenguaje de programación subyacente que se utilice. Vea la sección Comentarios. |
Dependencias
Si una producción XAML usa x:FieldModifier en cualquier parte, el elemento raíz de esa producción XAML debe declarar x:Class (Directiva).
Comentarios
x:FieldModifier no es pertinente para declarar el nivel de acceso general de una clase o de sus miembros. Sólo es pertinente para el comportamiento del procesamiento XAML cuando se procesa un objeto XAML determinado que forma parte de una producción XAML, y se vuelve un objeto que es accesible en el gráfico de objetos de una aplicación. De manera predeterminada, la referencia de campo para este tipo de objeto se mantiene privada, lo que evita que los consumidores del control modifiquen el gráfico de objetos directamente. En su lugar, se espera que los consumidores del control modifiquen el gráfico de objetos mediante modelos estándar habilitados por modelos de programación como, por ejemplo, obtener la raíz del diseño, colecciones de elementos secundarios, propiedades públicas dedicadas, etc.
El valor para el atributo x:FieldModifier varía en función del lenguaje de programación y su finalidad puede variar en marcos concretos. La cadena que hay que utilizar depende de cómo implementa cada lenguaje su CodeDomProvider y de los convertidores de tipos que devuelve para definir los significados de TypeAttributes.Public y TypeAttributes.NotPublic, y de si el lenguaje distingue entre mayúsculas y minúsculas.
Para C#, la cadena que se debe pasar para designar TypeAttributes.Public es public.
Para Microsoft Visual Basic .NET, la cadena que se debe pasar para designar TypeAttributes.Public es Public.
Para C++/CLI, no existe actualmente ningún destino para XAML; por consiguiente, la cadena que se pasa es indefinida.
También se puede especificar TypeAttributes.NotPublic (internal en C#, Friend en Visual Basic), pero especificar TypeAttributes.NotPublic es poco habitual porque NotPublic es ya el comportamiento predeterminado.
TypeAttributes.NotPublic es el comportamiento predeterminado porque es infrecuente que el código externo al ensamblado que compiló XAML necesite tener acceso a un elemento creado mediante XAML. La arquitectura de seguridad de WPF y el comportamiento de compilación de XAML de forma combinada no declararán públicos los campos que almacenan instancias de elementos, a menos que se establezca x:FieldModifier específicamente para permitir el acceso público.
x:FieldModifier sólo es pertinente para los elementos que también tienen x:Name (Directiva), porque ese nombre se utiliza para hacer referencia al campo una vez que es público.
De forma predeterminada, la clase parcial del elemento raíz es pública; sin embargo, puede convertirla en no pública utilizando el objeto x:ClassModifier (Directiva). x:ClassModifier (Directiva) también afecta al nivel de acceso de la instancia de la clase del elemento raíz. Puede incluir x:Name y x:FieldModifier en el elemento raíz, pero lo único que se consigue es una copia de campo público del elemento raíz, pero el nivel de acceso real de la clase del elemento raíz sigue estando controlado por x:ClassModifier (Directiva).
Vea también
Referencia
Conceptos
Clases XAML y personalizadas para WPF