2008-11-10 14 views
6

que estoy tratando de hacer esto ...En WPF, ¿cómo especifico la ruta a un archivo anidado en un directorio usando XAML?

<Image x:Name="imgGroupImage" Source="Images\unlock.png" Margin="0,0,5,0" /> 

Pero me sale este error ...

no puede convertir la serie 'Imágenes \ unlock.png' en el atributo 'Fuente' al objeto de tipo 'System.Windows.Media.ImageSource'. No se puede encontrar el recurso 'forms/images/unlock.png'. Error en 'System.Windows.HierarchicalDataTemplate' en el archivo de anotación 'Fuse; componentes/formas/MainWindow.xaml' objeto Línea 273 Posición 51.

Como se puede ver, mi formulario que incluye este XAML está en una carpeta Formas nombradas. Mis imágenes están en una carpeta llamada Imágenes. ¿Cómo mapeo de formularios a imágenes?

Intenté Source="..Images\unlock.png" que no funciona en WPF.

¿Algún ayuda?

Respuesta

9

Try barras en lugar de barras invertidas, y utilizar una ruta absoluta por destacados con una raya vertical:

Source="/Images/unlock.png" 

que por lo general funciona para mí.

En su defecto, consulte Pack URIs.

+1

DOH! Eso fue muy fácil. ¡Gracias! – Doug

+0

El enlace URI del paquete no funciona para mí. Esto es un equivalente: https://msdn.microsoft.com/en-us/library/vstudio/aa970069 (v = vs.100) .aspx –

0

¿Ha intentado configurar la fuente a BitmapImage?

<Image x:Name="imgGroupImage" Margin="0,0,5,0" > 
    <Image.Source> 
     <BitmapImage UriSource="Images/unlock.png" /> 
    </Image.Source> 
</Image> 

creo que el tipo predeterminado de Uri para UriSource es un pariente Uri, que trabaja fuera de clase base de la aplicación. Puede encontrar que puede configurar el BitmapSource un poco más fácil que tratar de encontrar la forma exacta en que debe ingresar la ruta del archivo en el atributo Source.

5
  1. Añada su imagen al proyecto en VS
  2. clic derecho en esa imagen unlock.png
  3. Ir al menú de contexto/Propiedades
  4. Cambio Acción de generación de recursos a

Eso es :-)

0

Para utilizar el recurso ubicado en la carpeta diferente que aquel en el que el XAML es, haga lo siguiente:

<Image Source="pack://application:,,,/Resources/image.png"/> 

Dónde Recursos es el nombre del directorio que desea utilizar recursos desde y image.png es nombre de imagen para mostrar. Respuesta encontrada gracias a @ matt-hamilton y @ brian-hinchey y su mención de Pack URI.
Funciona perfectamente con sus propios convertidores. Solo tiene que devolver el esquema de coincidencia de cadenas anterior.

Cuestiones relacionadas