2011-08-10 22 views
1

如何将菜单项的背景不透明度设置为0.0,但仍然以1.0不透明度显示其文本?MenuItem背景不透明,但不是它的文本?

+1

这http://stackoverflow.com/questions/1673132/wpf-contextmenu-design-how-to-set-background-in-wpf-menuitem –

+0

哦,是啊,那工作:D – Seva

回答

3

要做到这一点,你需要将背景色设置为没有alpha通道的背景色(前两个数字在十六进制颜色0x00000000)。这将使背景颜色完全透明。然后,您的文本只需要为Alpha通道使用0xFF的任何颜色(默认值)。

+0

你可以给一些伪代码吗? – Seva

2

看到这个问题:WPF Transparent menu

你需要覆盖菜单项模板。复制/粘贴到您的Window.ResourcesMenu.Resources

<ControlTemplate x:Key="{x:Static MenuItem.TopLevelHeaderTemplateKey}" TargetType="{x:Type MenuItem}"> 
    <Border Name="Border" > 
     <Grid> 
     <ContentPresenter 
      Margin="6,3,6,3" 
      ContentSource="Header" 
      RecognizesAccessKey="True" /> 
     <Popup 
      Name="Popup" 
      Placement="Bottom" 
      IsOpen="{TemplateBinding IsSubmenuOpen}" 
      AllowsTransparency="True" 
      Focusable="False" 
      PopupAnimation="Fade"> 
      <Border 
      Name="SubmenuBorder" 
      SnapsToDevicePixels="True" 
      Background="Transparent"> 
      <StackPanel 
       IsItemsHost="True" 
       KeyboardNavigation.DirectionalNavigation="Cycle" /> 
      </Border> 
     </Popup> 
     </Grid> 
    </Border> 
    <ControlTemplate.Triggers> 
     <Trigger Property="IsSuspendingPopupAnimation" Value="true"> 
     <Setter TargetName="Popup" Property="PopupAnimation" Value="None"/> 
     </Trigger> 
     <Trigger Property="IsHighlighted" Value="true"> 
     <Setter TargetName="Border" Property="Background" Value="#C0C0C0"/> 
     <Setter TargetName="Border" Property="BorderBrush" Value="Transparent"/> 
     </Trigger> 
     <Trigger SourceName="Popup" Property="Popup.AllowsTransparency" Value="True"> 
     <Setter TargetName="SubmenuBorder" Property="CornerRadius" Value="0,0,4,4"/> 
     <Setter TargetName="SubmenuBorder" Property="Padding" Value="0,0,0,3"/> 
     </Trigger> 
     <Trigger Property="IsEnabled" Value="False"> 
     <Setter Property="Foreground" Value="#888888"/> 
     </Trigger> 
    </ControlTemplate.Triggers> 
    </ControlTemplate> 
+0

不...因为背景仍然灰暗。 – Seva

+0

@Seva查看我更新的答案:) – Rachel

+0

Rachel,我正在使用这个例子,但是如果menuitem有孩子,他们不会以同样的方式绘制,不知道如何得到这个权利。复制上面并将其设置为x:Key =“{x:Static MenuItem.SubmenuHeaderTemplateKey}”,但格式不正确 –