2013-02-10 82 views
0

我有一個WPF VB.NET應用程序,我想使用嵌入在應用程序資源中的圖標作爲菜單圖標。到目前爲止,我有這個代碼(在窗口的初始化事件中):通過URI訪問圖標資源VB.NET

MenuItem.Icon = New Image() With {.Source = New BitmapImage(New 
Uri("Resources\Icon.ico", UriKind.Relative))} 

而圖標仍然不顯示,有什麼想法?

回答

1

的問題是你的URI。如果您將其設置在代碼後面,則必須填寫完整的WPF Pack URI。您還必須將圖標文件的Build Action 設置爲Resource(圖標的默認值爲None)。

MenuItem.Icon = New Image() With 
{ 
    .Source = New BitmapImage(New Uri("pack://application:,,,/Resources/Icon.ico")) 
} 

當你在XAML中指定URI,默認ImageSource的類型轉換器將添加pack://application:,,,部分,你可以簡單地寫

<Image Source="/Resources/Icon.ico"/> 
+0

感謝那些幫助很多!有一件事我發現,當我試圖使用XAML嵌入圖標時,我不得不添加pack:// application:,,,。無論如何,我可以確保我不必下次再添加它嗎? – 2013-02-11 19:50:42

+0

不確定你的意思,在XAML中,你不需要預先加載'pack:// application:,,,'部分。 – Clemens 2013-02-11 21:02:46

+0

不用擔心,但無論如何,您的解決方案工作! – 2013-02-11 21:38:39

0

更好的選擇是建立菜單中的XAML:(: 「Icon.ico」 在我的示例代碼)

    1. 在您的解決方案
    2. 添加圖片作爲ResourcesImages目錄中創建文件夾Images XAML可以使用下面的代碼:

    ...

    <MenuItem Header="Item1"> 
        <MenuItem.Icon> 
         <Image Source="/Images/Icon.ico" Width="20" Height="20" /> 
        </MenuItem.Icon> 
    </MenuItem> 
    

    或者,如果你想這樣做的代碼隱藏,你可以用下面的代替步驟3中的代碼:

    MenuItem.Icon = New Image() With {.Source = New BitmapImage(New Uri("/Images/Icon.ico", UriKind.RelativeOrAbsolute))} 
    
  • 相關問題