您已经创建了一个Image
控件,并试图在视觉树中放置两次。由于所有控件只能有一个父母,因此您的Image
已断开连接。因此,第二次使用它,第一次将断开连接,导致您丢失的图标。
可以解决这个问题,通过不添加Image
,但ImageSource
而不是你的资源:
<BitmapImage x:Key="DeleteIco" UriSource="pack://application:,,,/MyProject.myControl;component/Resources/Delete.ico" />
你的菜单有改变有点为它工作,虽然:
<ContextMenu x:Key="MyMenu1">
<MenuItem Header="Delete">
<MenuItem.Icon>
<Image Source="{StaticResource DeleteIco}" Width="16" Height="16"/>
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
<ContextMenu x:Key="MyMenu2">
<MenuItem Header="Delete me">
<MenuItem.Icon>
<Image Source="{StaticResource DeleteIco}" Width="16" Height="16"/>
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
更新:
您还可以使用样式来设置的一些基本属性为您
<Style TargetType="Image">
<Setter Property="Width" Value="16"/>
<Setter Property="Width" Value="16"/>
</Style>
或者使用样式MenuItem
每次设置Icon
。
<Style TargetType="MenuItem" x:Key="DeleteMenuIcon">
<Setter Property="Icon">
<Setter.Value>
<Image Source="{StaticResource DeleteIco}" Width="16" Height="16"/>
</Setter.Value>
</Setter>
</Style>
而且菜单项:
<MenuItem Header="Delete me" Style="{StaticResource DeleteMenuIcon}" />
似乎是明确的......所以,任何方式不重复 ...> WIDTH = “16” HEIGHT = “16” 的节点? –
serhio
2010-11-30 15:49:56
样式..使用样式为你设置图标..让我更新我的答案;) – Arcturus 2010-11-30 15:52:42