2011-11-09 15 views
5

La mia applicazione WPF include un file di risorse MyResources.resx, contenente più stringhe e immagini. Poiché l'applicazione dovrà essere localizzata, tutti i miei riferimenti alle risorse globalizzate devono essere fatti tramite le proprietà denominate della classe MyResources generata automaticamente. Il seguente codice funziona bene per le risorse di stringa:Immagini associate alle immagini aggiunte ai file resx utilizzando XAML

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

Tuttavia lo stesso non funziona per le immagini. Supponendo che ho un eflag.bmp immagine aggiunti alle risorse come risorsa di nome Bandiera, vorrei essere in grado di fare qualcosa del genere:

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

Si prega di notare che il seguente approccio alternativo:

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

non può essere utilizzato in questo caso perché non sarà in grado di gestire la localizzazione. Il problema può essere risolto utilizzando il codice sottostante, ma sto cercando una soluzione basata su XAML.

+0

provare a trascinare il file di immagine sulla superficie di disign e vedere quale origine verrà generato dall'IDE. –

+0

come si può trascinare un'immagine da un file resx? – user379429

+0

Cosa si ottiene aggiungendo un'immagine al progetto come qualsiasi altro file e impostando BuildAction su Risorsa? In questo modo sarai in grado di utilizzare/MyNamespace ** fonti, e questo è il modo in cui la maggior parte delle persone lo farà. possiedi le risorse di questa immagine? –

risposta

7

Trasforma il tuo x:Static in un Binding.Source e aggiungi un Converter che fa Bitmap to ImageSource.

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

In alternativa è possibile effettuare il convertitore un costume markup extension che prende un Bitmap e restituisce il ImageSource in ProvideValue.

Source="{me:BitmapToImageSource {x:Static local:Properties.MyResources.Flag}}" 
Problemi correlati