私は、メニューコマンドなどのようなものでいくつかのカスタム16x16アイコンを利用するWPF 4.0アプリケーションを持っています。私は(今のところ)2セットのアイコン、デフォルトのVista/7-ishのものといくつかのXP-ishのものを持っていたいと思います。私が望むのは、現在のOSにどのアイコンを使うかを決めることです。システムリソース単位でアイコンリソースを定義するにはどうすればよいですか?
今、特定のPNGリソースを指し示すテーマリソース辞書(Aero.NormalColor.xamlなど)でBitmapImageリソースを定義しています。アイコンを表示したい私のアプリでどこでも
<!-- Aero.NormalColor.xaml -->
<BitmapImage x:Key="IconSave" UriSource="/MyWPFApp;component/Resources/Icons16/Aero/disk.png"/>
<!-- Luna.NormalColor.xaml -->
<BitmapImage x:Key="IconSave" UriSource="/MyWPFApp;component/Resources/Icons16/Luna/disk.png"/>
は、これらのBitmapImagesのいずれかにStaticResourceとして画像/アイコンのソースプロパティを設定します。
<Image Source="{StaticResource IconSave}"/>
アイデアは、WPFは自動的に現在のOSやテーマに基づいたテーマの辞書をロードするので、BitmapImageのリソースの一組だけがロードされるだろうと、アイコンが魔法のように適切なものになるということです。
これは動作しません。実行時に「リソースが見つかりません」という恐れがあります。私の勘には、テーマファイルだけがカスタムコントロールの検索を受けるからです。Imageはそうではありません。
ブレンド4は問題ありませんが、にはがあり、Aero.NormalColor.xamlにマージされた特別なDesignTimeResources.xamlファイルが定義されています。 VS2010のチョークがありますが、DesignDataファイルなども使用できないため、私は驚くことではありません。私は現在、アプリケーションリソースにマージされた別のリソース辞書ファイル(MainSkin.xaml)も持っています。スタイルなどを参照することは、実行時にうまく動作します。
私は適切なトラックにありますが、ちょっとした問題がありますか?望みの効果を得るためには全く別のことをする必要がありますか?あれば何ですか?
'pack:// application:,,,/Resources/Icons16/Aero/disk.png'それ以外の場合、私は' DirectoryNotFoundException'をそのまま使用しました何らかの理由でC:\で探しています。 –