WPF устанавливает MenuItem.Icon в коде

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


person ScottG    schedule 27.08.2008    source источник


Ответы (8)


<MenuItem>
  <MenuItem.Icon>
    <Image>
      <Image.Source>
        <BitmapImage UriSource="/your_assembly;component/your_path_here/Image.png" />
      </Image.Source>
    </Image>
  </MenuItem.Icon>
</MenuItem>

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

person Arcturus    schedule 27.08.2008
comment
Оригинальный вопрос был для процедурного кода. Кроме того, я считаю, что в XAML вы можете написать <Image Source="/CreditAlpha;component/Images/ColorWheel.png" /> внутри <MenuItem.Icon> - person Neil; 14.09.2010
comment
+1 за то, что показал правильный путь... способ XAML... сделать это. @Neil, +1 тебе, и я отредактировал твое предложение, так как это правильный способ сделать это. - person Serj Sagan; 21.01.2013
comment
То, что это делается в XAML, не обязательно делает его правильным. - person Stephen Drew; 08.01.2014

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

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

menutItem.Icon = new Image
        {
        Source = new BitmapImage(new Uri("pack://application:,,,/your_assembly;component/yourpath/Image.png"))
        }
person IanR    schedule 01.10.2009

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

<MenuItem Header="Example">
   <MenuItem.Icon>
      <Image Source="pack://siteoforigin:,,,/Resources/Example.png"/>
   </MenuItem.Icon>
</MenuItem>
person Basti Endres    schedule 25.06.2013

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

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;
person awe    schedule 19.05.2009

Это то, что сработало для меня

<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>
person Gary95054    schedule 01.10.2013

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

person Python Kid    schedule 09.02.2013

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

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

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

person Mars    schedule 02.01.2011
comment
Это работает для WinForms. Вопрос заключался в том, как установить его вручную из кода. - person Alexandru Dicu; 06.10.2012

person    schedule
comment
Это очень помогло нам. Нам пришлось сначала создать изображение, затем назначить источник этого изображения для BitMapImage, затем установить menuItem.Icon = объект изображения, но это сработало. - person ScottG; 20.05.2009
comment
Я отредактировал ответ, чтобы новые посетители этого вопроса получили рабочий код на случай, если они пропустят эту ветку комментариев. - person Isak Savo; 02.12.2011