WPF, устанавливающий MenuItem.Icon в коде - PullRequest
33 голосов
/ 27 августа 2008

У меня есть папка с изображениями в png. Я хотел бы установить иконку MenuItem для этого PNG. Как мне написать это в процедурном коде?

Ответы [ 8 ]

55 голосов
/ 27 августа 2008
menutItem.Icon = new System.Windows.Controls.Image 
       { 
           Source = new BitmapImage(new Uri("images/sample.png", UriKind.Relative)) 
       };
21 голосов
/ 27 августа 2008
<MenuItem>
  <MenuItem.Icon>
    <Image>
      <Image.Source>
        <BitmapImage UriSource="/your_assembly;component/your_path_here/Image.png" />
      </Image.Source>
    </Image>
  </MenuItem.Icon>
</MenuItem>

Просто убедитесь, что ваше изображение также включено в файл проекта и помечено как ресурс, и все готово:)

15 голосов
/ 01 октября 2009

Ответ Арктура хорош, потому что это означает, что у вас есть файл изображения в вашем проекте, а не отдельная папка.

Итак, в коде, который становится ...

menutItem.Icon = new Image
        {
        Source = new BitmapImage(new Uri("pack://application:,,,/your_assembly;component/yourpath/Image.png"))
        }
1 голос
/ 25 июня 2013

Это немного короче: D

<MenuItem Header="Example">
   <MenuItem.Icon>
      <Image Source="pack://siteoforigin:,,,/Resources/Example.png"/>
   </MenuItem.Icon>
</MenuItem>
1 голос
/ 19 мая 2009

Вот как я его использовал (таким образом, его не нужно встраивать в сборку):

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;
0 голосов
/ 01 октября 2013

Вот что у меня сработало

<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>
0 голосов
/ 09 февраля 2013

Для тех из вас, кто использует vb.net, для этого вам нужно использовать это: menuItem.Icon = New Image() With {.Source = New BitmapImage(New Uri("pack://application:,,,/your_assembly;component/yourpath/Image.png"))}

0 голосов
/ 02 января 2011

Вы также можете использовать Visual Studio, чтобы вставить значок. Это самый простой способ

  • Щелкните правой кнопкой мыши по проекту в обозревателе решений
  • выбрал Свойства
  • Убедитесь, что вы находитесь на странице приложения.
  • @ источников, которые вы видите: Icon и Manifest
  • @ Значок: нажмите кнопку обзора и выберите значок.

Проблема решена.

...