WPF - La imagen 'no es parte del proyecto o su Acción de compilación no está configurada como Recurso'
-
11-07-2019 - |
Pregunta
Tengo un proyecto que requiere una imagen en la ventana. Esta es una imagen estática y agregué a través de 'Agregar > Elemento existente'. Existe en la raíz del proyecto.
Hago referencia a la imagen en una página de prueba así -
<Page x:Class="Critter.Pages.Test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Test">
<Image Source="bug.png"/>
</Page>
El problema es que recibo un mensaje que dice que no se puede encontrar o que su acción de compilación no es un recurso, pero sí existe y su acción de compilación ES un recurso. Si creo una nueva aplicación y la lanzo a una ventana, entonces funciona bien.
Cualquier ayuda sería genial.
Solución
Intente realizar una reconstrucción completa o elimine los archivos de compilación y luego compile el archivo.
Visual Studio no siempre recoge los cambios en los recursos, y puede ser una molestia hacer que se vuelva a compilar.
También intente usar un URI completo, ya que me ayudó cuando tuve el mismo problema. Algo como
pack://application:,,,/MyAssembly;component/bug.png
Otros consejos
? Haga clic derecho en el archivo de imagen ? Haga clic en propiedad ? Seleccione Crear acción para recurso ? Solución de limpieza y construcción ? Ejecute la solución
Obtendrás todo.
Tuve el mismo problema. Limpiar y reconstruir la solución no lo solucionó, así que reinicié Visual Studio y lo hizo. Esperamos que Visual 2010 solucione este problema y los muchos otros que afectan a wpf en Visual 2008.
Intente iniciar el camino hacia su imagen con un " / " ;:
<Image Source="/bug.png"/>
Hay una solución a su pregunta
<Image Source="/WpfApplication4;component/images/sky.jpg" />
" componente " no es una carpeta!
No lo hace, o al menos la versión beta actual no. Encontré esta página mientras buscaba exactamente el mismo problema. Reconstruir / limpiar no hizo nada. Después de cerrar y volver a cargar la solución, el archivo se volvió mágicamente compatible nuevamente.
Ejemplo de carga asíncrona, otra opción. Ejemplo clip.mp4 está en la raíz del proyecto web.
void Landing_Loaded(object sender, RoutedEventArgs e)
{
//Load video async
Uri pageUri = HtmlPage.Document.DocumentUri;
Uri videoUri = new UriBuilder(pageUri.Scheme, pageUri.Host, pageUri.Port, "clip.mp4").Uri;
WebClient webClient = new WebClient();
webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
webClient.OpenReadAsync(videoUri);
}
void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
byte[] VideoBuffer = new byte[e.Result.Length];
e.Result.Read(VideoBuffer, 0, (int)e.Result.Length);
MemoryStream videoStream = new MemoryStream(VideoBuffer);
ContentVideo.SetSource(videoStream);
ContentVideo.Stop();
ContentVideo.Play();
}
Me enfrenté exactamente al mismo problema, pero reiniciar VS2008 o limpiar y reconstruir el proyecto no funcionó para mí. Al final, los pasos a continuación hicieron el truco.
- En el Explorador de Windows, copie la imagen en la carpeta de recursos del proyecto. Ejemplo: MyProject \ Resources \
- Desde Visual Studio, haga clic con el botón derecho en Recursos y seleccione " Agregar > Artículo existente " y seleccione la imagen que acaba de copiar
- Desde el formulario XAML establezca la fuente de la imagen como:
" Source = " Resources / MyImage.ico "
(mi imagen se guardó como archivo de icono (.ico), pero este enfoque debería trabajar para cualquier tipo de imagen
Espero que esto ayude a alguien
Tuve un problema similar. Después de eliminar un archivo someStyle.xaml
que realmente no estaba usando del explorador de soluciones.
Luego restauré el archivo, pero no ocurrió ningún cambio. Limpiar y reconstruir el proyecto no ayudó.
Simplemente eliminando la fila correspondiente:
<ResourceDictionary Source="someStyle.xaml"/>
hizo el truco.
Recibí el mismo mensaje de error pero mis problemas fueron un simple error de NOOB.
Cuando agregué mis archivos .ico a "Mi proyecto / Recursos", VS creó una subcarpeta llamada Recursos y estaba tratando de usar;
<Window Icon="icons1.ico">
cuando debería haber estado usando;
<Window Icon="Resources/icons1.ico">
... no juzgues, empecé a usar WPF hace 1 semana :)