2011-11-09 21 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がどのソースを生成するかを確認してください。 –

+0

resxファイルから画像をドラッグするにはどうすればいいですか? – user379429

+0

他のファイルと同じようにプロジェクトに画像を追加し、そのBuildActionをResourceに設定すると何がうまくいくのですか?そうすれば、/ MyNamespace **ソースを使用できるようになります。これがほとんどの人がやる方法です。そのイメージリソースを所有していますか? –

答えて

7

x:StaticBinding.Sourceに変更し、Converterを追加します(Bitmap to ImageSourceを追加)。

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

別の方法としては、コンバータBitmapを取り、ProvideValueImageSourceを返すカスタムmarkup extensionすることができます。

Source="{me:BitmapToImageSource {x:Static local:Properties.MyResources.Flag}}" 
関連する問題