2011-11-09 53 views
5

我的WPF應用程序包含一個資源文件MyResources.resx,其中包含多個字符串和圖像。因爲應用程序需要本地化,所以我對全球化資源的引用必須通過自動生成的MyResources類的命名屬性來完成。以下代碼適用於字符串資源:使用XAML將圖像綁定到添加到resx文件的圖像

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

但是,對圖像不起作用。假設我有一個形象eflag.bmp加入到資源作爲命名標誌資源,我希望能夠做這樣的事情:

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

請注意,下面的另一種方法:

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

在這種情況下無法使用,因爲它無法處理本地化。這個問題可以使用代碼來解決,但我正在尋找一個基於XAML的解決方案。

+0

嘗試將圖像文件拖放到設計圖面上並查看IDE生成的源代碼。 – 2011-11-09 09:22:42

+0

如何從resx文件拖動圖像? – user379429

+0

將任何其他文件添加到項目中並將其BuildAction設置爲資源時會出現什麼問題?這樣你就可以使用/ MyNamespace **來源,這就是大多數人會這樣做的方式。你是否擁有該圖像資源? – 2011-11-09 10:15:35

回答

7

將您的x:Static轉換爲Binding.Source並添加一個Converter,其確實爲Bitmap to ImageSource

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

或者,也可以使轉換器的自定義markup extension這需要一個Bitmap,並返回ProvideValueImageSource

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