我有一個WPF 4.0應用程序,它使用菜單命令之類的東西中的一些自定義16x16圖標。我想(現在)有兩套圖標,默認的Vista/7-ish和一些XP-ish。我想要的是讓當前的操作系統決定使用哪些圖標。如何在每個系統主題的基礎上定義圖標資源?
現在,我已經在指向特定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之一。
<Image Source="{StaticResource IconSave}"/>
的想法是,既然WPF加載自動根據當前的OS和主題上一個主題字典,只有一組BitmapImage的資源會被加載和圖標會神奇地得到相應的。
但是,這不起作用,我在運行時遇到了可怕的「找不到資源」異常。我的直覺是,這是因爲主題文件只能搜索自定義控件,而圖像不是。
Blend 4對這些沒有任何問題,但它已通過在Aero.NormalColor.xaml上定義了它的特殊DesignTimeResources.xaml文件。 VS2010扼流圈,但它也沒有使用DesignData等文件,所以我並不感到驚訝。我目前還有一個單獨的資源字典文件(MainSkin.xaml),它被合併到應用程序資源中。引用樣式等可以在運行時正常工作。
我在正確的軌道上,只是有點不對嗎?我是否需要做一些完全不同的事情才能獲得理想的效果?如果是,需要做些什麼?
我不得不使用全包URI語法才能使它工作:'pack:// application:,,,, Resources/Icons16/Aero/disk.png'否則,我得到了一個'DirectoryNotFoundException',因爲它是看着C:\出於某種原因。 –