通过URI访问图标资源VB.NET

问题描述:

我有一个WPF VB.NET应用程序,我想使用嵌入在应用程序资源中的图标作为菜单图标。到目前为止,我有这个代码(在窗口的初始化事件中):通过URI访问图标资源VB.NET

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

而图标仍然不显示,有什么想法?

的问题是你的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

更好的选择是建立菜单中的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))}