いいえ、パックURIについての別の質問ではありません。 :-)外部リソースDLLに保存された画像
ブランドのデータを保存するためのアプリケーションの外部にリソースDLLがあります。それは(したがって、各DLLのため、元の画像ファイル名が各ブランドごとに異なるであろうことに注意)、そのResourceDictionary
にBitmapImage
を格納するメインアプリケーションで
<BitmapImage x:Key="Logo" UriSource="Resources/changing-vendorname.png" />
、Iは、外部DLLを読み、そこから様々なリソースを取得します、ベンダーのロゴをinlcuding:
Assembly.LoadFrom(BrandDllPath);
var dict = new ResourceDictionary();
dict.Source = new Uri("pack://application:,,,/BrandDll;component/Themes/Generic.xaml");
var VendorLogo = (BitmapImage)dict["Logo"];
私はこのVendorLogo
変数を調べると、それは期待BitmapImage
同じように含まれています。それでも、私はImage
コントロールに表示したいとき:
Image.Source = VendorLogo;
私は何も得られません。エラーメッセージは表示されず、何も表示されません。
実は、同じことは、私が使用して自分自身の間でリソースを置くとどうなる:
Application.Current.Resources["Logo"] = (BitmapImage)dict["Logo"];
とXAMLからそれを使用しようとする:
<Image Source="{DynamicResource Logo}" />
私は別の多くと同じことを行いますリソース、文字列、色(実際にアプリケーションをテーマにしています)、画像を除くすべてが機能します。
あなたは何を置けば代わりに
の我々は、元の画像の名前を取得し、それを使用してマルチステッププロセスを持っています'UriSource =" pack:// application:,,,/BrandDll; component/Resources/vendorname.png "のように、元のURIのアセンブリ名。 – Clemens
だからこそ、私はそれを開始した文章から始めました。 :-)私は元の名前を知らない。数百もの異なるブランドのDLLがあり、それぞれに独自の参照画像があります。そのため、辞書に入れられて汎用キーが割り当てられています。これを強調するために質問を更新しました。 –
私はこれをテストしました。私にとっては元のイメージの 'UriSource'の完全なPack URIで動作します。 – Clemens