2008-10-07 6 views
5

¿Por qué es que hay dos tipos de referencias en xaml.¿Cuál es la diferencia entre un espacio de nombres de esquema y una referencia de ensamblado en WPF?

Uno se parece a esto:

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

Pero la mía tener este aspecto:

xmlns:WPFToolKit="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit" 

Por qué no puedo hacer esto:

xmlns:local="http://myschema.mydomain.com/MyControlNamespace 

Gracias a ixlettervariables por la respuesta . Aquí hay una explicación detallada here

Respuesta

7

La segunda instancia es básicamente una referencia no asignada pero explícita a un espacio de nombres en un ensamblaje. La primera instancia es una referencia mapeada a un espacio de nombres en algún ensamblado al que hace referencia su proyecto. XAML Namespaces and Namespace Mapping, encima en MSDN explica esto con más detalle:

WPF define un atributo CLR que se consume por los procesadores XAML con el fin de asignar varios espacios de nombres CLR a un único espacio de nombres XML. Este atributo, XmlnsDefinitionAttribute, se coloca en el nivel de ensamblaje en el código fuente que produce el ensamblaje. El código fuente del ensamblado de WPF utiliza este atributo para asignar los diversos espacios de nombres comunes, como System.Windows y System.Windows.Controls, al espacio de nombres http://schemas.microsoft.com/winfx/2006/xaml/presentation.

Por lo tanto, añadiendo lo siguiente a su ensamblaje se podía hacer precisamente eso:

[assembly:XmlnsDefinition("http://myschema.mydomain.com/MyControlNamespace", "My.Control.Namespace")] 
0

La referencia esquema se utiliza para los elementos XAML estándar, que el compilador sabe cómo asignar directamente al incorporados en las clases de WPF.

La referencia del espacio de nombres CLR es una sugerencia para el compilador que debe buscar y el espacio de nombres al asignar los elementos XML en el espacio de nombres del espacio de nombres a las clases CLR/WPF.

Cuestiones relacionadas