【问题标题】:WPF Transparent menuWPF 透明菜单
【发布时间】:2011-05-01 02:29:45
【问题描述】:
我目前有以下菜单:
<Menu Grid.Row="1" Margin="3" Background="Transparent">
<MenuItem Name="mnuFile" Header="File" Background="#28FFAE04" Foreground="#FFFED528">
<MenuItem Name="mnuSettings" Header="Settings" Background="#28FFAE04" Foreground="#FFFED528" />
<MenuItem Name="mnuExit" Header="Exit" Background="#28FFAE04" Foreground="#FFFED528" />
</MenuItem>
<MenuItem Name="mnuView" Header="View" Background="#28FFAE04" Foreground="#FFFED528" />
<MenuItem Name="mnuAbout" Header="About" Background="#28FFAE04" Foreground="#FFFED528" />
</Menu>
我无法弄清楚如何使下拉半透明或完全透明的部分类似于浮动文本。这样我就可以看到下面的表格了。
任何帮助将不胜感激。
谢谢!
【问题讨论】:
标签:
c#
wpf
vb.net
menu
contextmenu
【解决方案1】:
为此,您需要更改 MenuItem 模板。实现您想要的最简单的模板更改是这样的:
<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>
如需更多自定义,我建议使用Blend 编辑您的样式/模板或使用Kaxaml 的简单样式作为您的样式的起点。