0
不,這不僅僅是關於pack URI的另一個問題。 :-)存儲在外部資源DLL中的圖像
我有一個應用程序外部的資源DLL來存儲品牌數據。它存儲BitmapImage
在其ResourceDictionary
(注意,原始圖像文件名會爲每個品牌不同,因此每個DLL):
<BitmapImage x:Key="Logo" UriSource="Resources/changing-vendorname.png" />
在主應用程序,我從它讀取外部DLL和獲得各種資源,計有廠商標識:
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}" />
我也一樣,有很多的不同資源,字符串,顏色(實際上是應用程序的主題),除了圖像以外,一切正常。
如果你把組件名稱中的原始URI,如'UriSource = 「包://應用:,,,/BrandDll;組件/資源/ vendorname.png」'。 – Clemens
不,這就是爲什麼我從我開始的那句話開始。 :-)我不知道原來的名字。將會有數百個不同品牌的DLL,每個都有自己的引用圖像。這就是爲什麼它被放入字典並分配了一個通用鍵。更新了這個問題來強調這一點。 –
我測試過這一點,對我來說,一個完整的包URI適用於原始圖像'UriSource'。 – Clemens