Вы создали элемент управления 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>
Обновление:
Вы также можете использовать стили, чтобы установить некоторые основные свойства Image
для вас
<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:
<MenuItem Header="Delete me" Style="{StaticResource DeleteMenuIcon}" />
, кажется, ясно ... так, каким-либо образом не повторить ...> Width = "16" Высота = узел "16"? –
serhio
2010-11-30 15:49:56
Стили .. Используйте стиль, чтобы установить значок для вас .. Lemme update my answer;) – Arcturus 2010-11-30 15:52:42