tutorial español ejemplos c# .net wpf xaml

c# - ejemplos - xaml pdf español



WPF: el nombre no existe en el espacio de nombres (5)

Estoy creando una aplicación C # / WPF utilizando VS2013, y tengo la siguiente definición de clase (en el mismo ensamblaje de la aplicación en ejecución):

namespace MyNamespace { public class MyKey { public MyKey() { } public string name = ""; } }

En MainWindow.xaml tengo:

<Window x:Class="MyNamespace.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:MyNamespace" Title="MainWindow" Height="350" Width="525" WindowState="Maximized" WindowStyle="None"> <Window.Resources> <local:MyKey x:Key="key" /> </Window.Resources> ...

VS sigue informando que

El nombre "MyKey" no existe en el espacio de nombres "clr-namespace: MyNamespace"

¿Algunas ideas?

PD: probé las siguientes soluciones (de preguntas ya publicadas en stackoverflow) pero ninguna de ellas funcionó:

  1. Mover la clase a un espacio de nombres diferente, luego usar el nuevo espacio de nombres en la referencia xaml
  2. Reiniciando VS y limpiando / reconstruyendo la solución
  3. limpiando la solución, luego cambiando el nombre de su carpeta y luego construyendo la solución nuevamente
  4. cambiando la referencia a:

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

Edición: Información adicional: La arquitectura de destino: X64, marco de destino: .Net 4.5


Ejecución de VS Enterprise 2017 versión 15.6.2 Targeting .Net 4.6.1

Tuve este mismo problema con una página UserControl xaml donde en sus recursos intentaba hacer referencia a un ValueConverter. El espacio de nombres era correcto, el intellisense incluso lo soltaría por ti, pero el diseñador no cargaría la página y el código no se compilaría. Incluso intenté mover uno de los convertidores de valor fuera del archivo y el espacio de nombres en cuestión y moverlo al código subyacente. VS estaba tan asustado que afirmaba que el método InitializeComponent () en el constructor de código subyacente no existía.

Lo que creo que finalmente lo solucionó para mí fue cuando me di cuenta de que a la clase ValueConverter le faltaba el atributo principal como este:

[ValueConversion (typeof (string), typeof (decimal))]

Una vez que agregué esa línea, hice una solución rápida de limpieza y compilación y luego compilé y trabajé. Entonces, de repente, el xaml pudo ver todas las reglas de validación y los convertidores de valores en ese archivo. Y ahora me he dado cuenta de que los otros 3 convertidores de valor en ese archivo tampoco tenían un atributo ValueConversion en ellos y, sin embargo, el código todavía se compila. Tal vez algo acerca de los tipos entrantes en ese primer convertidor era vago.

Todavía es un misterio. Sé que debería anular mi cambio y ver si el error es reproducible, pero después de luchar contra ese código durante la mayor parte del día estoy harto de mirarlo. Era un antiguo proyecto Prism que no se estaba ejecutando y lo actualicé a las bibliotecas Prism 7.0. También intenté restablecer todas las configuraciones del procesador a ''Cualquier CPU''. Se quejaba de que el bootstrapper estaba obsoleto, pero lo había ignorado. Reinicié y limpié todo varias veces. Incluso borré la carpeta .vs. Probablemente debería haber intentado antes eliminar completamente las carpetas obj y bin, eso es lo único que no había hecho.

Este no era mi proyecto. Normalmente siempre construyo convertidores de valor uno a un archivo con el archivo llamado igual. No pensaría que eso importaría, pero todo el error fue un poco loco en primer lugar.


Tuve el mismo problema en VS2012 Express Edition. Resuelto el problema usando el comando.

"WDExpress / ResetSettings" en el símbolo del sistema vs2012.

https://.com/a/33706647/4855197


Tuve un problema similar Lo que lo solucionó para mí fue cambiar las propiedades de compilación del proyecto, que se agregó como referencia. Resultó que el "objetivo de la plataforma" había sido cambiado en el pasado. Configurándolo en "Cualquier CPU" y reconstruyéndolo resolvió el error.


Una posible solución es eliminar todos los archivos .dll de la carpeta Debug y Release .

Porque a veces, cuando hace referencia al proyecto, se refiere a las dll precompiladas, incluso si ejecuta su proyecto en modo de depuración.

Elimine todos los archivos de la carpeta de depuración y lanzamiento y genere ese proyecto nuevamente, ahora agregue la referencia de este proyecto al lugar que desee. Funcionó perfectamente bien en mi final.


Una solución común a este error de VS conocido que no ha especificado que haya intentado es cambiar la plataforma de destino de compilación.

  1. Si su plataforma de creación de destino actual es x64, cambie a x86. Si actualmente es x86, cambia a x64.

  2. Limpie y construya la solución para la nueva plataforma de destino.

  3. Cambie de nuevo a la plataforma de destino deseada y vuelva a construir.