MenuItem.Icon 失去其图像

发布于 2024-10-21 19:11:39 字数 1033 浏览 1 评论 0原文

我有一个类似的资源;

  <Window.Resources>

    <MenuItem Header="*Rename" x:Key="ctxItem" x:Name="removeItem" Click="removeItem_Click" Padding="5,5,5,5">
        <MenuItem.Icon>
            <Image Margin="0,0,0,0" Source="../images/removeitem.png" Width="16" Height="16" />
        </MenuItem.Icon>
    </MenuItem>

在后面的代码中我执行以下操作;

ContextMenu ctxTmp = new ContextMenu();

        MenuItem mni = ((MenuItem)this.Resources["ctxItem"]);
        MenuItem mniTmp = new MenuItem();
        mniTmp.Click += new RoutedEventHandler(removeItem_Click);
        mniTmp.Name = "removeItem" + x;
        mniTmp.Tag = pic;
        mniTmp.Icon = mni.Icon;
        mniTmp.Header = mni.Header;
        mniTmp.CommandTarget = pic;
        ctxTmp.Items.Add(mniTmp);
        x++;
        return ctxTmp;

并将我的对象的 ContextMenu 设置为返回的项目。

行为是这样的: 它在所需的画布中显示我的 UIelement,并且 contextMenu 很好。 但是当我添加第二个对象时。上下文菜单仍然有效,但我正在使用的图像没有显示。这很奇怪,无法弄清楚。

谢谢波亚兹

i have a Resource like;

  <Window.Resources>

    <MenuItem Header="*Rename" x:Key="ctxItem" x:Name="removeItem" Click="removeItem_Click" Padding="5,5,5,5">
        <MenuItem.Icon>
            <Image Margin="0,0,0,0" Source="../images/removeitem.png" Width="16" Height="16" />
        </MenuItem.Icon>
    </MenuItem>

In code behind i do the following;

ContextMenu ctxTmp = new ContextMenu();

        MenuItem mni = ((MenuItem)this.Resources["ctxItem"]);
        MenuItem mniTmp = new MenuItem();
        mniTmp.Click += new RoutedEventHandler(removeItem_Click);
        mniTmp.Name = "removeItem" + x;
        mniTmp.Tag = pic;
        mniTmp.Icon = mni.Icon;
        mniTmp.Header = mni.Header;
        mniTmp.CommandTarget = pic;
        ctxTmp.Items.Add(mniTmp);
        x++;
        return ctxTmp;

And set my object's ContextMenu to the returning item.

The behaviour is like this:
It displays my UIelement in the needed canvas, and the contextMenu is fine.
But when i add a second object. Context menu still works, but the image i'm using is not shown.It's wierd and couldn't figured it out.

Thanks Poyraz

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

日久见人心 2024-10-28 19:11:39

我很惊讶你的图像源路径有效。
根据此网站 site,我会将您的路径 : 转换

Source="../images/removeitem.png"  

为 URI

Source="pack://application:,,,/AssemblyName;component/images/removeitem.png"

I'm surprised that your Image Source path works.
According to this web site, I will transform your path :

Source="../images/removeitem.png"  

into URI

Source="pack://application:,,,/AssemblyName;component/images/removeitem.png"
半城柳色半声笛 2024-10-28 19:11:39

您不能在两个 MenuItem 中重复使用相同的 Image 元素。您实际上将相同的视觉效果放置在两个位置,这是不允许的。您需要创建一个新的 Image 实例,即使它指向同一个图像。

但是,您可以重用 ImageSource 的实例。

You cannot reuse the same Image element in two MenuItems. You are effectively putting the same visual in two locations, which is not allowed. You would need to create a new instance of Image, even if it points to the same image.

You can however reuse instances of ImageSource.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文