2010-11-26 69 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