我有一个像资源;
<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很好。 但是当我添加第二个对象时。上下文菜单仍然有效,但我正在使用的图像没有显示。它很奇怪,无法弄明白。
感谢Poyraz
答案 0 :(得分:0)
我对您的图像源路径有效感到惊讶 根据这个网络site,我将改变你的道路:
Source="../images/removeitem.png"
到URI
Source="pack://application:,,,/AssemblyName;component/images/removeitem.png"
答案 1 :(得分:0)
您不能在两个MenuItem中重复使用相同的Image元素。您实际上是在两个位置放置相同的视觉效果,这是不允许的。您需要创建一个新的Image实例,即使它指向同一图像。
然而,您可以重用ImageSource的实例。