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

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

【问题讨论】:

    标签: c# wpf icons menuitem


    【解决方案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。问题是如何从代码中手动设置。
              猜你喜欢
              • 2011-06-04
              • 1970-01-01
              • 2021-12-18
              • 1970-01-01
              • 1970-01-01
              • 2021-06-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多