2010-07-29 6 views
7

estoy tratando de obligar a una fuente de imagen a mi XAML a C#unirse a una fuente de imagen en XAML

esto funciona

<Image Source="images/man.jpg"></Image> 

esto no funciona

<Image Source="images/{Binding imagesource}"></Image> 

donde Imagesource es una variable de cadena en el archivo C# de esta xaml y se establece igual que "man.jpg"

Respuesta

0

imagesource debe ser un objeto real Image, no un string.

Aquí es un método que va a crear un nuevo Image objeto dado un camino:

public BitmapImage Load(string path) 
{ 
    var uri = new Uri(path); 
    return new BitmapImage(uri); 
} 
+0

esto no funciona por alguna razón.Mi aplicación se niega a cargarlo y se bloquea al 100% – nooob

+0

¿Intentó la ruta completa o la ruta relativa? Debería ser un camino completo. Además, sé que mi método funciona en WPF ... tal vez no funcione en Silverlight por alguna razón. – devuxer

2

Usted no puede pegar una a mitad de camino de unión a través del valor de esa manera. O es un enlace, o no lo es. Suponiendo Imagesource es accesible al público a través de su DataContext, usted puede hacer esto:

<Image Source="{Binding imagesource}"/> 

Sin embargo, si se ha ajustado en "man.jpg" entonces no va a encontrar la imagen. De cualquier conjunto Imagesource a la ruta completa ("images/man.jpg") o utilizar un convertidor:

<Image Source="{Binding imagesource, Converter={StaticResource RelativePathConverter}}"/> 

El convertidor sería anteponer "imágenes /" en su valor. Sin embargo, puede ser necesario que el convertidor devuelva ImageSource en lugar de string.

+0

Cambié imagesource a la ruta completa "images/man.jpg" todavía no está funcionando. ¿Qué quieres decir con que debe ser públicamente accesible en el DataContext? Cambié su modificador de acceso a público y también hice funcionar para él, todavía no funciona. – nooob

+0

¿Cuál es su DataContext? ¿Lo has establecido? Busque errores vinculantes en la ventana de resultados de Visual Studio. –

+0

La propiedad Image.Source no es una cadena, por lo que esto no funcionará. –

3

aquí es una manera de cómo hacerlo en XAML:

Esto, unido al espacio de nombres:

xmlns:System="clr-namespace:System;assembly=mscorlib" 

continuación, añadir sus imágenes caminos

<System:String x:Key="ImageRefresh">/Theme;component/Images/icon_refresh.png</System:String> 
<System:String x:Key="ImageSearch">/Theme;component/Images/icon_search.png</System:String> 

Esto es cómo lo usa

<Image Height="16" Source="{StaticResource ImageSearch}" Stretch="Uniform" Width="16"/> 

Esto funciona bien, pero si carga su estilo xaml en Blend, se volverá falso ..

Un objeto del tipo "System.String" no se puede aplicar a una propiedad que espera el tipo "System.Windows.Media. Fuente de imagen".

Aún no he resuelto cómo reemplazar System: String con ese Media.ImageSource ... pero bueno ... me funciona en Visual Studio.

+0

Encontrado awser: http://stackoverflow.com/questions/347614/wpf-image-resources – Rumplin

+0

ImageSource como recurso estático funciona en Visual Studio 2012. – ljubomir

1

Las imágenes me han mordido en el pasado. Hay una cierta orden de búsqueda involucrada.

Cuando utiliza "image/man.jpg" podría referirse a un archivo dentro de su xple de silverlight, o relativo a la ubicación del archivo XAP. Por ejemplo, podría estar en YourProject.Web/ClientBin/image/man.jpg.

Primero debe solucionar los problemas utilizando primero las URL completas y descubra si esto funciona.

Cuestiones relacionadas