2010-07-21 17 views
11

Soy bastante nuevo en C#, WPF y XAML, así que no puedo usar los términos correctos para hacer la pregunta correcta =) Estoy tratando de agregar mi propio espacio de nombres a mi xaml presentar con el fin de utilizar mi propia clase fácilmente -I adivinar la razón es esto- me escribió el siguiente código en la etiqueta de ventana para esto:agregando un espacio de nombres personalizado a xaml

xmlns:myns="clr-namespace:LibNameSpace" 

Donde mi etiqueta de ventana también comienza con la siguiente definición:

< Window x:Class="LibNameSpace.MainWindow" 

Quiero usar el LibNameSpace:Class1 clase, y esperaba escribir myns:Class1 para esto. Sin embargo, ese comando causa este error:

Undefined CLR namespace. The 'clr-namespace' URI refers to a namespace 'LibNameSpace' that is not included in the assembly.

¿Cómo puedo solucionar esto?

+0

Asegúrese de agregar la referencia de la biblioteca al proyecto de aplicación – 0x4f3759df

Respuesta

26

El nombre LibNameSpace parece una biblioteca en otro ensamblaje. Si este es el caso, debe agregar el nombre de la asamblea:

xmlns:myns="clr-namespace:LibNameSpace;assembly=MyLibAssembly 

Actualización:

El nombre del ensamblado se puede encontrar en el proyecto-explorer en el propeties de pantalla del proyecto (de la biblioteca-asamblea). En general, también el nombre de archivo de la DLL sin dll -suffix representa el nombre del ensamblado.

+0

, de hecho, vi una solución de este tipo pero no sabía de dónde obtener el nombre de mi ensamblado ... =) – cemregoksu

+0

Cualquier otra sugerencia/idea/ayuda ?? – cemregoksu

+0

me temo que no funciona cuando escribo xmlns: myns = "clr-namespace: LibNameSpace; assembly = LibNameSpace" – cemregoksu

10

Porque para mí no es muy claro lo que quiere hacer, aquí otra oportunidad:

Si MyLibAssembly es el espacio de nombres principal de la aplicación y no en usted tiene una ventana llamada MainWindow y una clase llamada Class1 que desea crear una instancia en su MainWindow -class:

  • Asegúrese de que en Clase 1 es ningún error , el proyecto debe compilar sin errores. Elimine primero la declaración de espacio de nombre de xaml y compile su proyecto hasta que no tenga errores de compilación.
  • Clase 1 Asegúrese de que es público y tiene un constructor paramterless
  • Asegúrese de que en el código detrás de su MainWindow también está en el MyLibAssembly -namcespace.
  • Agregue la declaración namspace xmlns:local="clr-namespace:LibNameSpace en su xaml. local es generalmente utiliza para declarar el mismo espacio de nombres que el elemento actual, en su caso, la ventana, está en.
  • Inserte su Class1 con el <local:Class1/> -tag en el XAML. Si Class1 no deriva de FrameworkElement o un control de nivel superior, debe agregarlo a la sección de recursos de su ventana. Si esto es cierto, dele una llave. <local:Class1 x:Key="KeyToYourClass"/>

Maybe vs no está sincronizado.Haga clic en el explorador de soluciones en el nodo raíz Solución limpia y luego Reconstruir solución. Tal vez eso ayude.

Espero que haya sido de ayuda. Si no, intente cambiar el formato de su pregunta (use el símbolo de código para hacer que la pregunta sea más legible e intente reformularla para dejar más claro cuál es su deseo).

+2

+1 para la sugerencia de reconstruir. Me estaba realmente frustrando con el persistente squiggly. – Grault

5

Utilice Intellisense. En mi caso, un espacio importaba. en lugar de

xmlns:local="clr-namespace:DataAccess;assembly=DataAccess" 

que la mano mecanografiado

xmlns:local="clr-namespace:DataAccess; assembly=DataAccess" 

Aviso el espacio después de ';'. Esto hizo la diferencia. Así que utiliza Visual Studio Intellisense y te hará corregir el marcado xaml.

+0

¡Probé tantas cosas diferentes y finalmente esta lo hizo! Tan sencillo – John

4

Encontré esta respuesta mientras estaba luchando con problemas en Windows 8. Intentaba utilizar un Control de usuario y tuve varios errores. Los últimos en donde:

Error 9 Cannot add 'ScrollControl' into the collection property 'Children', type must be 'UIElement'

y:

Error 10 Unknown type 'ScrollControl' in XML namespace 'clr-namespace:EventTests.Controls;assembly=EventTests, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'

ScrollControl es mi control de usuario.

terminé reemplazando esto:

xmlns:Controls="clr-namespace:EventTests.Controls" 

Por esta:

xmlns:Controls="using:EventTests.Controls" 

espero que esto ahorra el tiempo que pasé con este tema.

Cuestiones relacionadas