У меня есть стиль ContextMenu и стиль MenuItem, оба из которых работают правильно в верхнем меню.Проблема в том, что если я добавлю подменю в пункт меню, то подменю не будет правильно оформлено.Похоже, что на этом этапе вы можете только стилизовать элемент меню, а не собственно подменю, поэтому вы не можете заменить стиль IsMouseOver (он по умолчанию используется для любой темы, которая включена в Windows).
Я искал и искал, самое близкое, что я могу найти, это сообщение на форуме на MSDN http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/69269d23-f97c-42e3-a9dd-0e7c0ba49bdd?prof=required, но на самом деле он также не отвечает правильно на вопрос, так как в его примере та же проблемаЯ бегу в.Любая помощь будет оценена!Заранее спасибо.
Редактировать: Джей, это то, что я делаю.Вот некоторый код в UserControl.Resources как верх моего объекта.
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Background" Value="#0f3c5a"></Setter>
<Setter Property="Foreground" Value="White"></Setter>
<Style.Triggers>
<Trigger Property="IsHighlighted" Value="True">
<Setter Property="Background" Value="Black"></Setter>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="LightGray"></Setter>
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="{x:Type ContextMenu}">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="SnapsToDevicePixels" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ContextMenu}">
<!--Here is where you change the border thickness to zero on the menu-->
<Border BorderThickness="0" x:Name="Border" >
<StackPanel ClipToBounds="True" Orientation="Vertical"
IsItemsHost="True"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Border" Property="Background" Value="#5082a4" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
, а затем что-то вроде этого для меню
<ContextMenu Closed="ContextMenu_Closed" >
<MenuItem Command="k:Window1.NewCommand" >
<MenuItem Command="k:Window1.DeleteCommand"/>
</MenuItem>
...
Все в слое NewCommand стилизовано правильно,Заходя в NewCommand для просмотра DeleteCommand, сам MenuItem разрабатывается правильно, но фактическое меню по умолчанию соответствует стилю темы Windows, и я пока не вижу способа перезаписать это.Самая важная часть - получить IsMouseOver из подменю, чтобы сохранить тот же внешний вид и структуру главного меню.