2011-01-01 11 views
38

I See a declaraciones mucho ax: significado en XAML

<TextBox x:Name="txtInput" />

o como

<BooleanToVisibilityConverter x:Key="boolToVis" /> 

qué es necesaria la x: y lo que me da.

<DockPanel.Resources> 
    <c:MyData x:Key="myDataSource"/> 
</DockPanel.Resources> 

Y aquí también tenemos los c:

Gracias por la ayuda

Respuesta

59

Es nada más que accesos directos a los diferentes espacios de nombres para XML. Puedes elegirlos como quieras.Si nos fijamos en las líneas superiores en su XAML se encuentra la línea:

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 

Cambiar el 'x' a 'wpf', por ejemplo, y se verá que es necesario cambiar todos los 'x:' prefijos de su código a 'wpf:' para hacerlo compilar.

El código de referencia del prefijo 'c:' es el suyo. Supongamos que tiene una biblioteca de clases que se compila en MyLib.dll. Esta biblioteca contiene una clase llamada MyData. Para poder hacer referencia a la clase MyData necesita algo como:

xmlns:c="clr-namespace:MyClasses;assembly=MyLib" 

en su encabezado XAML.

A continuación, puede hacer referencia a la clase MyData en su XAML con c:MyData. Pero es completamente libre de cambiar el 'c' a 'myfabulousclasses' o cualquier otra cosa que desee.

¿El propósito de esto? Para distinguir clases o miembros que tienen el mismo nombre, pero pertenecen a diferentes dll.

6

Es parte de un namespace. En su ejemplo, el c: prefix se usa para indicar que la etiqueta MyData pertenece a este espacio de nombres. Puede echar un vistazo al following article en MSDN que explica el x: prefix en XAML.

+2

Para ser claros: XAML se basa en XML, y el prefijo 'x:' es el prefijo de un espacio de nombres XML definido en el encabezado. –

13

La x: Prefijo

En el ejemplo anterior elemento raíz, el prefijo x: se utiliza para asignar el espacio de nombres XAML http://schemas.microsoft.com/winfx/2006/xaml, que es el espacio de nombres XAML dedicado que soporta construcciones del lenguaje XAML. Este prefijo x: se usa para mapear este espacio de nombres XAML en las plantillas para proyectos. El espacio de nombres XAML para el lenguaje XAML contiene varias construcciones de programación que usará con mucha frecuencia en su XAML. La siguiente es una lista de las construcciones de programación x: prefijo más comunes que usará:

x: Clave: Establece una clave única para cada recurso en un ResourceDictionary (o conceptos de diccionario similares en otros marcos). x: Key probablemente representará el 90% de los x: usos que verá en el marcado típico de una aplicación WPF.

x: Clase: especifica el espacio de nombres y el nombre de clase CLR para la clase que proporciona código subyacente para una página XAML. Debe tener una clase de este tipo para admitir código subyacente según el modelo de programación de WPF, y por lo tanto, casi siempre verá x: asignada, incluso si no hay recursos.

x: Nombre: especifica un nombre de objeto en tiempo de ejecución para la instancia que existe en el código de tiempo de ejecución después de procesar un elemento de objeto. En general, con frecuencia usará una propiedad equivalente definida por WPF para x: Name. Dichas propiedades se asignan específicamente a una propiedad de respaldo de CLR y, por lo tanto, son más convenientes para la programación de aplicaciones, donde con frecuencia utiliza el código de tiempo de ejecución para encontrar los elementos nombrados de XAML inicializado. La propiedad más común es FrameworkElement.Name. Aún puede usar x: Name cuando la propiedad de nombre de nivel de marco WPF equivalente no sea compatible con un tipo particular. Esto ocurre en ciertos escenarios de animación.

x: Estático: habilita una referencia que devuelve un valor estático que, de lo contrario, no es una propiedad compatible con XAML.

x: Tipo: Crea una referencia de tipo basada en un nombre de tipo. Esto se usa para especificar atributos que toman Tipo, como Style.TargetType, aunque con frecuencia la propiedad tiene conversión nativa de cadena a texto de tal manera que el uso de la extensión x: Type markup es opcional.

http://msdn.microsoft.com/en-us/library/ms752059.aspx http://msdn.microsoft.com/en-us/library/ms753327.aspx