2011-04-21 7 views
13

Estoy desarrollando una aplicación para Windows Phone.¿Por qué la propiedad de fuente de imagen XAML contiene "/ MyApp; componente"?

estoy usando una imagen y cuando selecciono una imagen mediante el panel Propiedades consigo el siguiente XAML:

<Image x:Name="GameImage" Margin="8" Source="/MyApp;component/Assets/Icons/GameImage.png"/> 

¿Por qué recibo "/MyApp;component/..."? (¿Hay alguna manera mejor?)

Si trato de hacer Image.Source="Assets/Icons/GameImage.png" ¿por qué no funciona?

Respuesta

39

Esto se debe a que su imagen tiene su acción de compilación establecida en Recurso (que es el valor predeterminado). Si se cambia a contenido puede configurar la fuente en su XAML como esto:

<Image x:Name="GameImage" Margin="8" Source="/Assets/Icons/GameImage.png"/> 

para ponerlo en código que puede hacer esto:

BitmapImage tn = new BitmapImage(); 
tn.SetSource(Application.GetResourceStream(new Uri(@"Assets/Icons/GameImage.png", UriKind.Relative)).Stream); 
Image.Source = tn; 

Debería utilizar contenido para un rendimiento razones. Consulta este artículo para más detalles: http://www.windowsphonegeek.com/tips/wp7-working-with-images-content-vs-resource-build-action

0

Cualquier contenido marcado como un recurso incrustado se carga desde un ensamblaje. Por lo tanto, los sitios de uso deben saber especificar el ensamblaje en el que está incrustado un recurso. En su caso, esto es MyApp.

0

No se olvide de añadir:

using System.Windows.Media.Imaging; 

BitmapImage tn = new BitmapImage(); 
tn.SetSource(Application.GetResourceStream(new Uri(@"Assets/Icons/GameImage.png", UriKind.Relative)).Stream); 
Image.Source = tn; 
0

Se puede utilizar:

BitmapImage obj = new BitmapImage(); 
obj.UriSource = new Uri(mera_image.BaseUri,file.Path); 
+0

'FrameworkElement.BaseUri' sólo funciona para el nuevo teléfono de Windows 8.1 en Windows ans Tienda de aplicaciones; sin embargo, esta solicitud es sobre la aplicación Windows Phone 7. –

Cuestiones relacionadas