2011-11-09 6 views
5

Moja aplikacja WPF zawiera plik zasobów MyResources.resx zawierający kilka ciągów i obrazów. Ponieważ aplikacja będzie musiała być zlokalizowana, wszystkie moje odniesienia do zglobalizowanych zasobów muszą być dokonywane za pośrednictwem nazwanych właściwości automatycznie generowanej klasy MyResources. Poniższy kod działa dobrze dla zasobów smyczkowych:Obrazy powiązane z obrazami dodanymi do plików resx za pomocą XAML

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

Jednak samo nie działa w przypadku obrazów. Zakładając Mam eflag.bmp obraz dodany do zasobów jako zasób o nazwie Flag, chciałbym być w stanie zrobić coś takiego:

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

Zwróć uwagę, że następnego alternatywnego podejścia:

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

nie może być użyty w tym przypadku, ponieważ nie będzie w stanie obsłużyć lokalizacji. Problem można rozwiązać za pomocą kodu, ale szukam rozwiązania opartego na XAML.

+0

spróbuj przeciągnąć plik obrazu na powierzchnię disign i sprawdź, jakie źródło wygeneruje IDE. –

+0

Jak można przeciągnąć obraz z pliku Resx? – user379429

+0

Co wykręcasz, dodając obraz do projektu, jak każdy inny plik, i ustawiasz jego właściwość BuildAction na zasoby? W ten sposób będziesz mógł korzystać ze źródeł/MyNamespace ** i tak postępuje większość ludzi. czy jesteś właścicielem tych zasobów graficznych? –

Odpowiedz

7

Zmień swój x:Static w Binding.Source i dodaj Converter, który ma Bitmap to ImageSource.

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

Alternatywnie można dokonać konwerter zwyczaj markup extension który zajmuje Bitmap i zwraca ImageSource w ProvideValue.

Source="{me:BitmapToImageSource {x:Static local:Properties.MyResources.Flag}}" 
Powiązane problemy