大量的試驗和錯誤和搜索後,下面的文章讓我對我的方式: Access ResourceDictionary items programmatically
如果每個XAML中矢量圖像包含在一個ResourceDictionary中,並帶有一個鍵(請參閱下面的格式的第二篇文章)...
如果XAML中的矢量圖像文件都存儲在您的項目(建設行動:頁),您可以通過以下方式加載它們:
//Get the ResourceDictionary using the xaml filename:
ResourceDictionary dict = System.Windows.Application.LoadComponent(new Uri("/yourprojectname;component/youriconfolder/youriconfilename.xaml", System.UriKind.Relative)) as ResourceDictionary;
//Get the xaml as a DrawingImage out the ResourceDictionary
DrawingImage image = dict[dict.Keys.Cast<object>().ToList()[0]] as DrawingImage;
我可以返回的圖像,並將其綁定到視圖模型屬性,它返回iconfilename.xaml。然後,我使用具有上述代碼的轉換器來查找圖標並將其作爲DrawingImage返回。 或者你可以指定它作爲圖像的來源(見我的第二篇文章下面)。
UPDATE:2015.10.08 - 看起來卡爾沒有考慮到他的文章的「XAML格式示例」部分。在XAML會是這個樣子:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<DrawingImage x:Key="SomeUniqueKey">
<DrawingImage.Drawing>
<DrawingGroup>
...
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</ResourceDictionary>
然後,你可以這樣做:
DrawingImage image = dict["SomeUniqueKey"] as DrawingImage;
或者,如果你喜歡用直接的Image
,
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Image x:Key="SomeUniqueImage">
<Image.Source>
<DrawingImage>
...
</DrawingImage>
</Image.Source>
</Image>
</ResourceDictionary>
和:
Image someImage = dict["SomeUniqueImage"] as Image;