Как получить изображение из файла ресурсов в WPF menuitem.icon

У меня есть следующий фрагмент кода (XAML С#):

        <Menu IsMainMenu="True" DockPanel.Dock="Top">
            <MenuItem Name="fileMenu" Header="_File" />
            <MenuItem Name="editMenu" Header="_Edit" />
            <MenuItem Name="setupMenu" Header="_Setup">
                <MenuItem Header="_Language">
                    <MenuItem.Icon> 
                         //I want to insert image here
                    </MenuItem.Icon>
                </MenuItem>
            </MenuItem>
            <MenuItem Name="helpMenu" Header="_Help" />
        </Menu>

И файл ресурсов с именем images.resx, содержащий изображение с именем lang.png. Как я могу вставить изображение в качестве значка для Menu-Item? Есть ли лучший способ?

Ответы

Ответ 1

Как сказал Джейсон, лучше добавить свои изображения в качестве ресурсов в свой проект.

  • Откройте "Свойства" для вашего проекта.
  • Выберите вкладку "Вертикальные вкладки"
  • Выберите "Изображения" из левой панели "Комбобокс"
  • Выберите "Добавить ресурс → Добавить существующий файл..." справа ComboBox
  • Найдите изображение, которое вы хотели бы использовать, например "C1.png" (он будет автоматически скопирован в папку "Ресурсы" в корневом каталоге вашего проекта)
  • Выберите свойства в новом добавленном изображении ресурса
  • В свойствах установите для параметра "Создать действие для ресурса"
  • Откройте конструктор для файла .xaml, содержащего меню, и добавьте изображение в MenuItem.Icon, а затем поместите курсор на изображение.

XAML

<Menu IsMainMenu="True" DockPanel.Dock="Top"> 
    <MenuItem Name="fileMenu" Header="_File" /> 
    <MenuItem Name="editMenu" Header="_Edit" /> 
    <MenuItem Name="setupMenu" Header="_Setup"> 
        <MenuItem Header="_Language"> 
            <MenuItem.Icon>  
                 <Image/>
            </MenuItem.Icon> 
        </MenuItem> 
    </MenuItem> 
    <MenuItem Name="helpMenu" Header="_Help" /> 
</Menu> 

Из свойств теперь вы можете выбрать символ alt text в свойстве Source и все доступные ресурсы изображения будут отображаться.

alt text

В этом диалоговом окне вы также можете выбрать "Добавить", найти файл образа на диске, и все вышеуказанные шаги будут сделаны для вас Visual Studio.

alt text

Полученный uri для Image.Source в xaml будет выглядеть примерно так (что, конечно же, может быть добавлено вручную)

<Menu IsMainMenu="True" DockPanel.Dock="Top">
    <MenuItem Name="fileMenu" Header="_File" />
    <MenuItem Name="editMenu" Header="_Edit" />
    <MenuItem Name="setupMenu" Header="_Setup">
        <MenuItem Header="_Language">
            <MenuItem.Icon>
                <Image Source="/MenuIconImage;component/Resources/C1.png" />
            </MenuItem.Icon>
        </MenuItem>
    </MenuItem>
    <MenuItem Name="helpMenu" Header="_Help" />
</Menu>

Ответ 2

Вы можете добавить это в Menu.Icon.

<Image>
  <Image.Source>
    <BitmapImage UriSource="/ASSEMBLYNAME;component/PATH/IMAGE.png" />
  </Image.Source>
<Image>