2010-05-03 15 views
32

Empecé a utilizar el atributo XmlnsDefinition para unir algunos espacios de nombres CLR en una sola xmlns para mayor comodidad en XAML.¿Cómo hacer que XmlnsDefinition funcione en el ensamblado local?

Desafortunadamente, parece que esto solo funciona cuando se usan ensamblajes foráneos. Si tengo un archivo XAML en el mismo ensamblaje que los tipos que están en el espacio de nombres al que me refiero desde XmlnsDefinition, el compilador da un error sobre el tipo que no existe en los xmlns que estoy definiendo.

Al mover el tipo a un ensamblaje foráneo se soluciona el problema.

¿Hay alguna manera de usar XmlnsDefinition en un ensamblaje y hacer que se use desde ese ensamblaje a través de XAML?

Respuesta

40

Lamentablemente, no. El archivo XAML debe analizarse antes de que se cree el ensamblado para generar el código implicado por el XAML para ser incluido en el ensamblado. El compilador XAML produce código detrás de los archivos (los archivos que terminan en, por ejemplo, .g.cs) y estos archivos se vuelven parte del ensamblaje en el que se encuentra el archivo XAML. Como el ensamblado aún no se ha creado, el compilador XAML no se puede cargar para determinar los atributos de XmlnsDeclaration se han especificado.

1

Use clr-namespace en su lugar. Por ejemplo:

xmlns:controls="clr-namespace:Rhapsody.UI.Main.Controls 
Cuestiones relacionadas