如何将资源文件中的图像转换为WPF menuitem.icon

Gil*_*man 17 c# wpf resources xaml image

我有以下代码(XAML C#):

        <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>
Run Code Online (Sandbox Code Playgroud)

还有一个名为images.resx的资源文件,其中包含一个名为lang.png的图像.如何将图像作为菜单项的图标插入?有没有更好的办法?

Fre*_*lad 34

正如Jason所说,最好将您的图像作为资源添加到项目中.

  1. 打开项目的"属性"
  2. 选择Vertical-tab Resources
  3. 从左侧ComboBox中选择图像
  4. 从右侧ComboBox中选择"添加资源 - >添加现有文件..."
  5. 找到您要使用的图像,例如"C1.png"(它将自动复制到项目根目录中的Resources文件夹中)
  6. 在新添加的资源图像上选择属性
  7. 在属性中,将Build Action设置为Resource
  8. 打开包含Menu的.xaml文件的设计器,在MenuItem.Icon中添加一个Image,然后将光标放在Image上.

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> 
Run Code Online (Sandbox Code Playgroud)

您可以从属性中选择 替代文字 将显示源属性上的符号和所有可用的图像资源.

替代文字

在此对话框中,您还可以选择"添加",在磁盘上找到一个图像文件,Visual Studio将为您完成上述所有步骤.

替代文字

xaml中Image.Source的结果uri看起来像这样(当然也可以手工添加)

<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>
Run Code Online (Sandbox Code Playgroud)