2010-11-26 65 views
13

,我有以下的代码段(XAML C#):如何从一个资源文件的图像到WPF menuitem.icon

 <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巴纽。 如何插入图像作为Menu-Item的图标? 有没有更好的方法?

回答

28

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

  1. 打开“属性”为您的项目
  2. 选择垂直制表资源
  3. 从左侧选择组合框图片
  4. 选择“添加资源 - >添加现有文件...”从右边的ComboBox
  5. 找到图片你想用,如“C1.png”(它会自动被复制到资源文件夹中的项目的根)
  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> 

从属性您现在可以选择在源物业和所有可用的图像资源alt text符号会显示出来。

alt text

在此对话框中,你也可以选择“添加”,找到磁盘上的图像文件和所有上述步骤会为你由Visual Studio进行。

alt text

产生的URI在XAML中Image.Source会是这个样子(这ofcourse也可以通过手工添加)

<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> 
1

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

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

的路径是什么?资源文件的名称?或资源目录? – 2010-11-26 12:21:59

+0

对不起,我没有更好解释。我认为更好的方法是不要将图像放在RESX文件中,只需将它们作为资源添加到项目中即可。这将允许你使用上面的代码。 – Jason 2010-11-26 13:02:22