vez usar una sobre recurso que pudo propiedad mas los eventos establecida esta esquema elaborar documentacion content componentes como wpf xaml namespaces

usar - xaml en wpf



agregar un espacio de nombre personalizado a xaml (4)

Soy bastante nuevo en C #, WPF y XAML, por lo que es posible que no pueda usar los términos correctos para formular la pregunta correcta =). Estoy intentando agregar mi propio espacio de nombres a mi archivo xaml para usar mi propia clase fácilmente. Supongo que la razón es esta: escribí el siguiente código en la etiqueta de la ventana para esto:

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 la clase LibNameSpace:Class1 , y esperaba escribir myns:Class1 para esto. Sin embargo, ese comando causa este error:

Espacio de nombre CLR indefinido. El URI ''clr-namespace'' hace referencia a un espacio de nombres ''LibNameSpace'' que no está incluido en el ensamblado.

¿Cómo puedo arreglar esto?


El nombre LibNameSpace parece que es una biblioteca en otro ensamblado. Si este es el caso, debe agregar el nombre del ensamblado:

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

Actualizar:

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


Porque para mí no está claro qué es lo que quieres hacer, aquí otro intento:

Si MyLibAssembly es el espacio de nombre principal de tu aplicación y allí tienes una ventana llamada MainWindow y una clase llamada Class1 que quieres crear una instancia en tu MainWindow -class:

  • Asegúrese de que en Class1 no haya errores, el proyecto debe compilar sin errores. Elimine primero la declaración del espacio de nombres del xaml y compile su proyecto hasta que no tenga errores de compilación.
  • Asegúrese de que Class1 sea público y tenga un constructor sin paramterless
  • Asegúrese de que en el código detrás de su MainWindow también esté en el MyLibAssembly -namcespace.
  • A continuación, agregue la declaración namspace xmlns:local="clr-namespace:LibNameSpace en su xaml. local generalmente se usa para declarar el mismo espacio de nombre como su elemento actual, en su caso, la ventana está en.
  • Inserta tu Class1 con la etiqueta <local:Class1/> 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"/>

Quizás vs no está sincronizado. Haga clic en el explorador de soluciones en la solución limpia del nodo raíz y luego vuelva a generar la solución . Tal vez eso ayude.

Espero que esto haya ayudado. 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).


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

Error 9 No se puede agregar ''ScrollControl'' en la propiedad de colección ''Children'', tipo debe ser ''UIElement''

y:

Error 10 Tipo desconocido ''ScrollControl'' en el espacio de nombres XML ''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"

Para esto:

xmlns:Controls="using:EventTests.Controls"

Espero que esto ahorre el tiempo que pasé con este problema.


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

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

Yo tecleo a mano

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

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