2009-02-24 17 views
5

Soy nuevo en WPF, así que espero formular la pregunta correctamente. Lo que me gustaría hacer es vincular mi <Image> a una imagen en línea. Sin embargo, la imagen a la que me gustaría enlazar cambia dependiendo del estado de la aplicación. Por ejemplo, si quería unirse a un empleado seleccionado de una lista, me gustaría recuperar una dirección URL base de mi App.config y añadir el nombre de la imagen utilizando el ID del empleado, así:Cómo enlazar a una imagen usando una URL dinámica en WPF?

var baseUrl = ConfigurationSettings.AppSettings["BaseImageUrl"]; 
var imageUrl = String.Format("{0}/{1}.jpg", baseUrl, employeeID); 

El problema es que no estoy seguro de cómo hacerlo declarativamente en WPF. ¡Cualquier ayuda es muy apreciada!

Respuesta

3

¿Tiene un objeto empleado en el código? De ser así, podría exponer una propiedad de URI que se basa en la identificación del empleado del objeto.

De lo contrario podrías tener una página asp.net en su página web que sirve una imagen (no tengo ni idea de si esto va a funcionar, es una idea sin embargo)

así tener algo como esto en su xaml

<Image Source="{Binding Path=EmployeeId, StringFormat='http://my.url.com/Image.aspx?employeeId={0}'}" /> 

Image.aspx transmitiría la imagen en función de la variable employee get get?

Como dije, probablemente haya un poco de error con esto, pero podría funcionar, creo que la propiedad de URI en una clase de empleado sería la opción más limpia.

+0

Esto funcionó simplemente genial. ¡Gracias por la ayuda! –

0

creo que algo como esto le ayudará:

<Window.Resources> 
    <ImageSource x:Key="MyImage" Source="C:\Images\Default.jpg" /> 
</..> 

<Image Source="{DynamicResource MyImage}" /> 

Luego, en el código subyacente:

((ImageSource)this.Resources["MyImage"]).Source = "C:\Path\From\Config.jpg"; 
+0

¿Puede esa ruta del sistema de archivos sustituir una URL? Creo que eso es lo que requería la pregunta original (y tengo curiosidad). –

+0

Por lo que sé, sí. –

+0

Gracias por la respuesta. Gran sugerencia Sin embargo, esperaba que pudiera haber una manera de hacerlo declarativamente (sin tener que entrar en el código subyacente). ¿Estoy esperando demasiado? :) –

Cuestiones relacionadas