通过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"/>
答
在
更好的选择是建立菜单中的XAML:(: “Icon.ico” 在我的示例代码)
- 在您的解决方案
- 添加图片作为
Resources
到Images
目录中创建文件夹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))}
感谢那些帮助很多!有一件事我发现,当我试图使用XAML嵌入图标时,我不得不添加pack:// application:,,,。无论如何,我可以确保我不必下次再添加它吗? – 2013-02-11 19:50:42
不确定你的意思,在XAML中,你不需要预先加载'pack:// application:,,,'部分。 – Clemens 2013-02-11 21:02:46
不用担心,但无论如何,您的解决方案工作! – 2013-02-11 21:38:39