【问题标题】:How to get an image from a resource file into an WPF menuitem.icon如何从资源文件中获取图像到 WPF menuitem.icon
【发布时间】:2011-05-16 03:56:28
【问题描述】:

我有以下代码(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>

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

【问题讨论】:

  • @UuDdLrLrSs 谢谢!为了这一刻,我等了 10 年!我终于从肉体的牢狱中解脱了!
  • 如果您指的是“这是否回答了您的问题”文本,当问题被标记为潜在重复时,系统会自动将其放入其中。那不是我自己写的。

标签: c# wpf image xaml resources


【解决方案1】:

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

  1. 为您的项目打开“属性”
  2. 选择垂直选项卡资源
  3. 从左侧 ComboBox 中选择图像
  4. 从右侧的 ComboBox 中选择“添加资源 -> 添加现有文件...”
  5. 找到您要使用的图片,例如“C1.png”(它会自动复制到项目根目录下的 Resources 文件夹中)
  6. 在新添加的资源图像上选择属性
  7. 在属性中,将构建操作设置为资源
  8. 打开包含菜单的 .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> 

您现在可以从属性中选择源属性上的 符号,所有可用的图像资源都将显示出来。

您还可以在此对话框中选择“添加”,在磁盘上找到一个图像文件,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>

【讨论】:

  • 谢谢你们!明白了!
  • 感谢您提供详细信息!
【解决方案2】:

您可以将其添加到 Menu.Icon。

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

【讨论】:

  • 路径是什么?资源文件的名称?还是资源目录?
  • 对不起,我没有解释得更好。我认为更好的方法是不要将图像放在 RESX 文件中,而是将它们作为资源添加到您的项目中。这将允许您使用上面的代码。
猜你喜欢
  • 2020-06-22
  • 1970-01-01
  • 1970-01-01
  • 2020-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-27
  • 1970-01-01
相关资源
最近更新 更多