我想動態地在代碼中填充菜單並在c#中設置其圖標。將MenuItem.Icon設置爲不起作用的圖像
我已經讀到這裏這篇文章,給出的答案似乎是完全合理的:
WPF setting a MenuItem.Icon in code
我的解釋:
mItem.Icon = new Image
{
//filename is just image.png in build output folder
Source = new BitmapImage(new Uri(fileName, UriKind.Relative))
};
,但是當涉及到運行時,圖標麥凱納那裏。在檢查WPF可視化器中的數據時,它說圖像的ActualHeight和ActualWidth爲0,並且看起來沒有初始化(這就是說,IsInitialized和IsLoaded是false)。
我打賭,我正在做某種新手的錯誤的地方,但我只是沒有看到它(備案,菜單的所有其他方面如預期工作)提前
謝謝:)
編輯1: 目前,圖像只是一個測試的佔位符,我已經添加了作爲項目的鏈接,然後將'build action'設置爲'none'和'copy to output directory ''複製,如果更新'。圖像被稱爲「buttonIndicator_off.png」,並在運行時的文件名字符串爲「buttonIndicator_off.png」
編輯2: 也試過這樣:
var bm = new BitmapImage();
bm.BeginInit();
bm.CacheOption = BitmapCacheOption.OnLoad;
bm.UriSource = new Uri(fileName, UriKind.Relative);
bm.EndInit();
mItem.Icon = new Image {
Source = bm
};
,並設置圖像編譯作爲一種資源和使用:
mItem.Icon = new Image
{
Source = new BitmapImage(new Uri("pack://application:,,,/buttonIndicator_off.png"))
};
我幾乎可以肯定所有這些解決方案應該工作,所以我開始覺得有什麼奇怪的事情。
編輯3:測試圖像與矩形填充:
rectangle_testImage.Fill = new ImageBrush(bm);
和這個作品
你確定了'fileName'設置是否正確?如果可能的話,請告訴你如何將你的圖像導入到你的項目以及'fileName'的特定字符串。 – 2014-10-28 14:11:43
當然。編輯相應的問題 – 2014-10-28 14:31:44