2011-11-09 12 views
5

Mi aplicación WPF incluye un archivo de recursos MyResources.resx, que contiene varias cadenas e imágenes. Debido a que la aplicación necesitará ser localizada, todas mis referencias a los recursos globalizados deben hacerse a través de propiedades con nombre de la clase MyResources autogenerada. El siguiente código funciona bien para los recursos de cadena:Imágenes vinculadas a imágenes agregadas a archivos resx usando XAML

<Button Content="{x:Static local:Properties.MyResources.ButtonText}" /> 

Sin embargo, lo mismo no funciona para las imágenes. Suponiendo que tengo una eflag.bmp imagen añadida a los recursos como un recurso denominado Bandera, me gustaría ser capaz de hacer algo como esto:

<Image Source="{x:Static local:Properties.MyResources.Flag}" /> 

Tenga en cuenta que el siguiente enfoque alternativo:

<Image Source="/MyNamespace;component/Resources/eflag.bmp" /> 

no se puede utilizar en este caso porque no será capaz de manejar la localización. El problema se puede resolver utilizando el código subyacente, pero estoy buscando una solución basada en XAML.

+0

intente arrastrar su archivo de imagen a la superficie de diseño y ver qué fuente generará IDE. –

+0

¿cómo se puede arrastrar una imagen desde un archivo resx? – user379429

+0

¿Qué ocurre al agregar una imagen al proyecto como cualquier otro archivo y configurar BuildAction en el recurso? De esta forma, podrá usar fuentes de/MyNamespace ** y así lo hará la mayoría de las personas. ¿Eres dueño de esos recursos de imagen? –

Respuesta

7

Convierte tu x:Static en un Binding.Source y agrega un Converter que hace Bitmap to ImageSource.

Source="{Binding Source={x:Static local:Properties.MyResources.Flag}, 
       Converter={StaticResource BitmapToImageSourceConverter}}" 

Alternativamente, usted puede hacer que el convertidor de una costumbre markup extension que toma un Bitmap y devuelve el ImageSource en ProvideValue.

Source="{me:BitmapToImageSource {x:Static local:Properties.MyResources.Flag}}" 
Cuestiones relacionadas