2009-11-04 10 views
0

Je crée un menu contextuel comme celui-ci.WPF ContextMenu Conception. Comment définir l'arrière-plan dans WPF MenuItem?

<DockPanel.ContextMenu> 
    <ContextMenu Background="#CD252220" Opacity="0.95" Foreground="LightGray" BorderBrush="DarkGray"> 
     <MenuItem Header="_Save Image..." x:Name="btSave" IsEnabled="False" Click="btSave_Click" Style="{StaticResource MyStyle}"> 
      <MenuItem.Icon> 
       <Image Source="icons/save.png" Width="16" Height="16" Style="{StaticResource IconStyle}"/> 
      </MenuItem.Icon> 
     </MenuItem> 
    </ContextMenu> 
</DockPanel.ContextMenu> 

Pourquoi côté gauche de ce menu est BLANC ????? Ce sera un # CD252220 couleur ou transparent, chignon pas blanc !!!!!! Comment le corriger? :)

http://itrash.ru/idb/40e872e71346dcf9bd58ba8aec0b2a17/omenu.png.html - Menu capture d'écran

post-scriptum En XP c'est OK. Menu est Blanc uniquement sur Vista (ne pas W7)

Répondre

-1

Si vous déclarerez un style personnalisé pour votre menu contextuel, cette façon, il sera de même pour tous les OS.

2

Je trouve une solution! Vous devez simplement définir la propriété OverridesDefaultStyle dans la section Style-defenition;)

<Style x:Key="{x:Type ContextMenu}" TargetType="{x:Type ContextMenu}"> 
<Setter Property="OverridesDefaultStyle" Value="True"/> 
<Setter Property="SnapsToDevicePixels" Value="True"/> 
<Setter Property="Template"> 
<Setter.Value> 
<ControlTemplate TargetType="{x:Type ContextMenu}"> 
<Border Background="#CD222120" CornerRadius="7, 7, 8, 8" BorderBrush="DarkGray" BorderThickness="2" Opacity="0.96"> 
<StackPanel ClipToBounds="True" Orientation="Vertical" IsItemsHost="True" Margin="5,4,5,4"/> 
</Border> 
</ControlTemplate> 
</Setter.Value> 
</Setter> 
</Style> 
<ControlTemplate x:Key="{x:Static MenuItem.TopLevelItemTemplateKey}" TargetType="{x:Type MenuItem}"> 
<Border Name="Border" > 
<Grid> 
<ContentPresenter Margin="6,3,6,3" ContentSource="Header" RecognizesAccessKey="True" /> 
</Grid> 
</Border> 
</ControlTemplate>