




menutItem.Icon = new System.Windows.Controls.Image
{
Source = new BitmapImage(new Uri("images/sample.png", UriKind.Relative))
};
Я отредактировал ответ, чтобы новые посетители этого вопроса получали рабочий код на случай, если они пропустят эту ветку комментариев.
<MenuItem>
<MenuItem.Icon>
<Image>
<Image.Source>
<BitmapImage UriSource = "/your_assembly;component/your_path_here/Image.png" />
</Image.Source>
</Image>
</MenuItem.Icon>
</MenuItem>
Просто убедитесь, что ваше изображение также включено в файл проекта и помечено как ресурс, и все готово :)
Первоначальный вопрос касался процедурного кода. Кроме того, я верю, что в XAML вы можете написать <Image Source = "/CreditAlpha;component/Images/ColorWheel.png" /> внутри <MenuItem.Icon>
+1 за то, что указал правильный путь ... способ XAML ... сделать это. @Neil, +1 к вам, и я отредактировал ваше предложение, так как это правильный способ сделать это
То, что это сделано в XAML, не обязательно делает его правильным.
Вот как я его использовал (так его не нужно встраивать в сборку):
MenuItem item = new MenuItem();
string imagePath = "D:\Images\Icon.png");
Image icon = new Image();
icon.Source= new BitmapImage(new Uri(imagePath, UriKind.Absolute));
item.Icon = icon;
Ответ Арктура хорош, потому что это означает, что в вашем проекте есть файл изображения, а не отдельная папка.
Итак, в коде, который становится ...
menutItem.Icon = new Image
{
Source = new BitmapImage(new Uri("pack://application:,,,/your_assembly;component/yourpath/Image.png"))
}
Вы также можете использовать Visual Studio для вставки значка. Это самый простой способ
Задача решена.
Это работает для WinForms. Вопрос был в том, как установить его вручную из кода.
Для тех из вас, кто использует vb.net, для этого вам необходимо использовать следующее:
menuItem.Icon = New Image() With {.Source = New BitmapImage(New Uri("pack://application:,,,/your_assembly;component/yourpath/Image.png"))}
Это немного короче: D
<MenuItem Header = "Example">
<MenuItem.Icon>
<Image Source = "pack://siteoforigin:,,,/Resources/Example.png"/>
</MenuItem.Icon>
</MenuItem>
Это то, что сработало для меня
<MenuItem Header = "delete ctrl-d" Click = "cmiDelete_Click">
<MenuItem.Icon>
<Image>
<Image.Source>
<ImageSource>Resources/Images/delete.png</ImageSource>
</Image.Source>
</Image>
</MenuItem.Icon>
</MenuItem>
Это нам очень помогло. Нам нужно было сначала создать изображение, затем назначить источник этого изображения для BitMapImage, затем установить объект menuItem.Icon = Image, но это сработало.