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

时间:2013-02-10 11:54:02

标签: wpf vb.net

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

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

图标仍未显示,有任何想法吗?

2 个答案:

答案 0 :(得分: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 TypeConverter将添加pack://application:,,,部分,您只需编写

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

答案 1 :(得分:0)

更好的选择是在XAML中构建菜单:

  1. 在解决方案中创建文件夹Images
  2. 将图片Resources添加到Images目录(在我的示例代码中:“Icon.ico”)
  3. 在XAML中,您可以使用以下代码:
  4. ...

    <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))}