WPF 在代码中设置 MenuItem.Icon

Posted

技术标签:

【中文标题】WPF 在代码中设置 MenuItem.Icon【英文标题】:WPF setting a MenuItem.Icon in code 【发布时间】:2010-09-07 00:17:07 【问题描述】:

我有一个带有 png 的图像文件夹。我想将 MenuItem 的图标设置为该 png。我如何在程序代码中编写这个?

【问题讨论】:

【参考方案1】:
menutItem.Icon = new System.Windows.Controls.Image 
        
           Source = new BitmapImage(new Uri("images/sample.png", UriKind.Relative)) 
       ;

【讨论】:

这对我们帮助很大。我们必须先创建一个 Image,然后将该 Image 的来源分配给 BitMapImage,然后设置 menuItem.Icon = Image 对象,但它确实有效。 我编辑了答案,以便这个问题的新访问者在他们错过这个评论线程的情况下获得工作代码【参考方案2】:
<MenuItem>
  <MenuItem.Icon>
    <Image>
      <Image.Source>
        <BitmapImage UriSource="/your_assembly;component/your_path_here/Image.png" />
      </Image.Source>
    </Image>
  </MenuItem.Icon>
</MenuItem>

只要确保你的图片也包含在项目文件中并标记为资源,你就可以开始了:)

【讨论】:

原始问题是针对程序代码的。另外,我相信在 XAML 中,您可以在 &lt;MenuItem.Icon&gt; 中写入 &lt;Image Source="/CreditAlpha;component/Images/ColorWheel.png" /&gt; +1 用于展示正确的方式... XAML 方式... 做到这一点。 @Neil,+1 给你,我编辑了你的建议,因为这是正确的方法 仅仅因为它是在 XAML 中完成的,并不一定是正确的方式。【参考方案3】:

Arcturus 的回答很好,因为这意味着您的项目中有图像文件,而不是一个独立的文件夹。

所以,在代码中变成...

menutItem.Icon = new Image
        
        Source = new BitmapImage(new Uri("pack://application:,,,/your_assembly;component/yourpath/Image.png"))
        

【讨论】:

【参考方案4】:

这有点短:D

<MenuItem Header="Example">
   <MenuItem.Icon>
      <Image Source="pack://siteoforigin:,,,/Resources/Example.png"/>
   </MenuItem.Icon>
</MenuItem>

【讨论】:

【参考方案5】:

这就是我使用它的方式(这样它就不需要内置到程序集中):

MenuItem item = new MenuItem();
string imagePath = "D:\\Images\\Icon.png");
Image icon = new Image();
icon.Source= new BitmapImage(new Uri(imagePath, UriKind.Absolute));
item.Icon = icon;

【讨论】:

【参考方案6】:

这对我有用

<MenuItem Header="delete   ctrl-d" Click="cmiDelete_Click">
    <MenuItem.Icon>
        <Image>
            <Image.Source>
                <ImageSource>Resources/Images/delete.png</ImageSource>
            </Image.Source>
        </Image>
    </MenuItem.Icon>
</MenuItem>

【讨论】:

【参考方案7】:

对于那些使用 vb.net 的人,要做到这一点,你需要使用这个: menuItem.Icon = New Image() With .Source = New BitmapImage(New Uri("pack://application:,,,/your_assembly;component/yourpath/Image.png"))

【讨论】:

【参考方案8】:

您还可以使用 Visual Studio 插入图标。这是最简单的方法

在解决方案资源管理器中右键单击您的项目 选择属性 确保您在申请页面中。 @你看到的资源:图标和清单 @图标:单击浏览并选择您的图标。

问题解决了。

【讨论】:

这适用于 WinForms。问题是如何从代码中手动设置。

以上是关于WPF 在代码中设置 MenuItem.Icon的主要内容,如果未能解决你的问题,请参考以下文章

WPF 在代码隐藏中设置 TextBox 属性

如何在 wpf 后面的代码中设置窗口图标?

WPF 在后面的代码中设置 DataTemplate 网格大小(ResourceDictionary)

在 RichTextBox WPF 中设置文化/语言

在 WPF 中的 XAML 中设置 DataContext

在 WPF/xaml 中设置静态日期时间