MenuItem.Icon 失去其图像
我有一个类似的资源;
<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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我很惊讶你的图像源路径有效。
根据此网站 site,我会将您的路径 : 转换
为 URI
I'm surprised that your Image Source path works.
According to this web site, I will transform your path :
into URI
您不能在两个 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.