wpf – System.Windows.Controls.MenuItem没有图标区域
发布时间:2020-12-13 20:13:22 所属栏目:Windows 来源:网络整理
导读:每当我尝试玩 WPF菜单项的外观时,我都有机会自定义标题,这基本上是一个项目的文本. 我需要的是一个黑色的菜单,白色的文本,没有“图标区域”. ||Some text http://img848.imageshack.us/img848/7622/iconarea.png 如何删除菜单项的图标区域? 谢谢. 您将需要
每当我尝试玩
WPF菜单项的外观时,我都有机会自定义标题,这基本上是一个项目的文本.
我需要的是一个黑色的菜单,白色的文本,没有“图标区域”. ||Some text http://img848.imageshack.us/img848/7622/iconarea.png 如何删除菜单项的图标区域? 谢谢.
您将需要从
here获取默认样式,并从MenuItem的控件模板中删除该区域.
对于MenuItem,您实际上可以重新定义SubmenuItemTemplateKey和SubmenuHeaderTemplateKey ControlTemplate,类似于here所述. 编辑: 背景实际上是由菜单样式呈现的.如果您搜索“MenuItemIconColumnGroup”,您将找到所有使用它的地方. 编辑: 这是一个使用黑色背景和白色前景的完整示例: <Application x:Class="DeleteMeWPF.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:theme="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero" StartupUri="MainWindow.xaml"> <Application.Resources> <MenuScrollingVisibilityConverter x:Key="MenuScrollingVisibilityConverter" /> <Geometry x:Key="DownArrow">M 0,0 L 3.5,4 L 7,0 Z</Geometry> <Geometry x:Key="UpArrow">M 0,4 L 3.5,0 L 7,4 Z</Geometry> <Geometry x:Key="RightArrow">M 0,0 L 4,3.5 L 0,7 Z</Geometry> <Geometry x:Key="Checkmark">M 0,5.1 L 1.7,5.2 L 3.4,7.1 L 8,0.4 L 9.2,0 L 3.3,10.8 Z</Geometry> <LinearGradientBrush x:Key="MenuItemSelectionFill" StartPoint="0,0" EndPoint="0,1"> <LinearGradientBrush.GradientStops> <GradientStop Color="#34C5EBFF" Offset="0" /> <GradientStop Color="#3481D8FF" Offset="1" /> </LinearGradientBrush.GradientStops> </LinearGradientBrush> <LinearGradientBrush x:Key="MenuItemPressedFill" StartPoint="0,1"> <LinearGradientBrush.GradientStops> <GradientStop Color="#28717070" Offset="0" /> <GradientStop Color="#50717070" Offset="0.75" /> <GradientStop Color="#90717070" Offset="1" /> </LinearGradientBrush.GradientStops> </LinearGradientBrush> <Style x:Key="{x:Static MenuItem.SeparatorStyleKey}" TargetType="{x:Type Separator}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Separator}"> <Grid SnapsToDevicePixels="true" Margin="0,6,4"> <Rectangle Height="1" Margin="30,1,1" Fill="#E0E0E0" /> <Rectangle Height="1" Margin="30,0" Fill="White" /> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> <ControlTemplate x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type FrameworkElement},ResourceId=SubmenuContent}" TargetType="{x:Type ContentControl}"> <Border Background="Black" BorderBrush="#FF959595" BorderThickness="1"> <ContentPresenter Grid.ColumnSpan="2" Margin="1,0" /> </Border> </ControlTemplate> <ControlTemplate x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type MenuItem},ResourceId=TopLevelItemTemplateKey}" TargetType="{x:Type MenuItem}"> <Grid SnapsToDevicePixels="true"> <Rectangle x:Name="OuterBorder" RadiusX="2" RadiusY="2" /> <Rectangle Name="Bg" Margin="1" Fill="{TemplateBinding MenuItem.Background}" Stroke="{TemplateBinding MenuItem.BorderBrush}" StrokeThickness="1" RadiusX="1" RadiusY="1" /> <Rectangle x:Name="InnerBorder" Margin="2" /> <DockPanel> <ContentPresenter x:Name="Icon" Margin="4,0" VerticalAlignment="Center" ContentSource="Icon" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> <Path x:Name="GlyphPanel" Margin="7,0" Visibility="Collapsed" VerticalAlignment="Center" Fill="{TemplateBinding MenuItem.Foreground}" FlowDirection="LeftToRight" Data="{StaticResource Checkmark}" /> <ContentPresenter ContentSource="Header" Margin="{TemplateBinding MenuItem.Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> </DockPanel> </Grid> <ControlTemplate.Triggers> <Trigger Property="Icon" Value="{x:Null}"> <Setter TargetName="Icon" Property="Visibility" Value="Collapsed" /> </Trigger> <Trigger Property="IsChecked" Value="true"> <Setter TargetName="GlyphPanel" Property="Visibility" Value="Visible" /> <Setter TargetName="Icon" Property="Visibility" Value="Collapsed" /> </Trigger> <Trigger Property="IsHighlighted" Value="true"> <Setter TargetName="Bg" Property="Stroke" Value="#90717070" /> <Setter TargetName="OuterBorder" Property="Stroke" Value="#50FFFFFF" /> <Setter TargetName="InnerBorder" Property="Stroke" Value="#50FFFFFF" /> </Trigger> <Trigger Property="IsKeyboardFocused" Value="true"> <Setter TargetName="Bg" Property="Stroke" Value="#E0717070" /> <Setter TargetName="Bg" Property="Fill" Value="{StaticResource MenuItemPressedFill}" /> <Setter TargetName="InnerBorder" Property="Stroke" Value="#50747272" /> </Trigger> <Trigger Property="IsEnabled" Value="false"> <Setter Property="Foreground" Value="#FF9A9A9A" /> <Setter TargetName="GlyphPanel" Property="Fill" Value="#848589" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> <ControlTemplate x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type MenuItem},ResourceId=TopLevelHeaderTemplateKey}" TargetType="{x:Type MenuItem}"> <Grid SnapsToDevicePixels="true"> <Rectangle x:Name="OuterBorder" RadiusX="2" RadiusY="2" /> <Rectangle Name="Bg" Margin="1" Fill="{TemplateBinding MenuItem.Background}" Stroke="{TemplateBinding MenuItem.BorderBrush}" StrokeThickness="1" RadiusX="1" RadiusY="1" /> <Rectangle x:Name="InnerBorder" Margin="2" /> <DockPanel> <ContentPresenter x:Name="Icon" Margin="4,0" Visibility="Collapsed" VerticalAlignment="Center" Fill="{TemplateBinding MenuItem.Foreground}" FlowDirection="LeftToRight" Data="{StaticResource Checkmark}" /> <ContentPresenter ContentSource="Header" Margin="{TemplateBinding MenuItem.Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> </DockPanel> <Popup x:Name="PART_Popup" HorizontalOffset="1" VerticalOffset="-1" AllowsTransparency="true" Placement="Bottom" IsOpen="{Binding Path=IsSubmenuOpen,RelativeSource={RelativeSource TemplatedParent}}" Focusable="false" PopupAnimation="{DynamicResource {x:Static SystemParameters.MenuPopupAnimationKey}}"> <theme:SystemDropShadowChrome Name="Shdw" Color="Transparent"> <ContentControl Name="SubMenuBorder" Template="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type FrameworkElement},ResourceId=SubmenuContent}}" IsTabStop="false"> <ScrollViewer CanContentScroll="true" Style="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type FrameworkElement},ResourceId=MenuScrollViewer}}"> <ItemsPresenter Margin="2" KeyboardNavigation.TabNavigation="Cycle" KeyboardNavigation.DirectionalNavigation="Cycle" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Grid.IsSharedSizeScope="true" /> </ScrollViewer> </ContentControl> </theme:SystemDropShadowChrome> </Popup> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsSuspendingPopupAnimation" Value="true"> <Setter TargetName="PART_Popup" Property="PopupAnimation" Value="None" /> </Trigger> <Trigger Property="Icon" Value="{x:Null}"> <Setter TargetName="Icon" Property="Visibility" Value="Collapsed" /> </Trigger> <Trigger Property="IsChecked" Value="true"> <Setter TargetName="GlyphPanel" Property="Visibility" Value="Visible" /> <Setter TargetName="Icon" Property="Visibility" Value="Collapsed" /> </Trigger> <Trigger SourceName="PART_Popup" Property="Popup.HasDropShadow" Value="true"> <Setter TargetName="Shdw" Property="Margin" Value="0,5,5" /> <Setter TargetName="Shdw" Property="Color" Value="#71000000" /> </Trigger> <Trigger Property="IsHighlighted" Value="true"> <Setter TargetName="Bg" Property="Stroke" Value="#90717070" /> <Setter TargetName="OuterBorder" Property="Stroke" Value="#50FFFFFF" /> <Setter TargetName="InnerBorder" Property="Stroke" Value="#50FFFFFF" /> </Trigger> <Trigger Property="IsKeyboardFocused" Value="true"> <Setter TargetName="Bg" Property="Stroke" Value="#E0717070" /> <Setter TargetName="Bg" Property="Fill" Value="{StaticResource MenuItemPressedFill}" /> <Setter TargetName="InnerBorder" Property="Stroke" Value="#50747272" /> </Trigger> <Trigger Property="IsSubmenuOpen" Value="true"> <Setter TargetName="Bg" Property="Stroke" Value="#E0717070" /> <Setter TargetName="Bg" Property="Fill" Value="{StaticResource MenuItemPressedFill}" /> <Setter TargetName="InnerBorder" Property="Stroke" Value="#50747272" /> </Trigger> <Trigger Property="IsEnabled" Value="false"> <Setter Property="Foreground" Value="#FF9A9A9A" /> <Setter TargetName="GlyphPanel" Property="Fill" Value="#848589" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> <ControlTemplate x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type MenuItem},ResourceId=SubmenuItemTemplateKey}" TargetType="{x:Type MenuItem}"> <Grid SnapsToDevicePixels="true"> <Rectangle Name="Bg" Fill="{TemplateBinding MenuItem.Background}" Stroke="{TemplateBinding MenuItem.BorderBrush}" StrokeThickness="1" RadiusX="2" RadiusY="2" /> <Rectangle x:Name="InnerBorder" Margin="1" RadiusX="2" RadiusY="2" /> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" SharedSizeGroup="MenuItemIconColumnGroup" /> <ColumnDefinition Width="4" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="37" /> <ColumnDefinition Width="Auto" SharedSizeGroup="MenuItemIGTColumnGroup" /> <ColumnDefinition Width="17" /> </Grid.ColumnDefinitions> <ContentPresenter x:Name="Icon" Margin="1" VerticalAlignment="Center" ContentSource="Icon" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> <Border x:Name="GlyphPanel" Background="#E6EFF4" BorderBrush="#CDD3E6" BorderThickness="1" CornerRadius="3" Margin="1" Visibility="Collapsed" Width="22" Height="22"> <Path Name="Glyph" Width="9" Height="11" Fill="#0C12A1" FlowDirection="LeftToRight" Data="{StaticResource Checkmark}" /> </Border> <ContentPresenter Grid.Column="2" ContentSource="Header" Margin="{TemplateBinding MenuItem.Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> <TextBlock Grid.Column="4" Text="{TemplateBinding MenuItem.InputGestureText}" Margin="{TemplateBinding MenuItem.Padding}" /> </Grid> </Grid> <ControlTemplate.Triggers> <Trigger Property="Icon" Value="{x:Null}"> <Setter TargetName="Icon" Property="Visibility" Value="Collapsed" /> </Trigger> <Trigger Property="IsChecked" Value="true"> <Setter TargetName="GlyphPanel" Property="Visibility" Value="Visible" /> <Setter TargetName="Icon" Property="Visibility" Value="Collapsed" /> </Trigger> <Trigger Property="IsHighlighted" Value="true"> <Setter TargetName="Bg" Property="Fill" Value="{StaticResource MenuItemSelectionFill}" /> <Setter TargetName="Bg" Property="Stroke" Value="#8071CBF1" /> <Setter TargetName="InnerBorder" Property="Stroke" Value="#40FFFFFF" /> </Trigger> <Trigger Property="IsEnabled" Value="false"> <Setter Property="Foreground" Value="#FF9A9A9A" /> <Setter TargetName="GlyphPanel" Property="Background" Value="#EEE9E9" /> <Setter TargetName="GlyphPanel" Property="BorderBrush" Value="#DBD6D6" /> <Setter TargetName="Glyph" Property="Fill" Value="#848589" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> <ControlTemplate x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type MenuItem},ResourceId=SubmenuHeaderTemplateKey}" TargetType="{x:Type MenuItem}"> <Grid SnapsToDevicePixels="true"> <Rectangle Name="Bg" Fill="{TemplateBinding MenuItem.Background}" Stroke="{TemplateBinding MenuItem.BorderBrush}" StrokeThickness="1" RadiusX="2" RadiusY="2" /> <Rectangle x:Name="InnerBorder" Margin="1" Stroke="Transparent" StrokeThickness="1" RadiusX="2" RadiusY="2" /> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" SharedSizeGroup="MenuItemIconColumnGroup" /> <ColumnDefinition Width="4" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="37" /> <ColumnDefinition Width="Auto" SharedSizeGroup="MenuItemIGTColumnGroup" /> <ColumnDefinition Width="17" /> </Grid.ColumnDefinitions> <ContentPresenter x:Name="Icon" Margin="1" VerticalAlignment="Center" ContentSource="Icon" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> <Border x:Name="GlyphPanel" Background="#E6EFF4" BorderBrush="#CDD3E6" BorderThickness="1" CornerRadius="3" Margin="1" Visibility="Collapsed" Width="22" Height="22"> <Path Name="Glyph" Width="9" Height="11" Fill="#0C12A1" FlowDirection="LeftToRight" Data="{StaticResource Checkmark}" /> </Border> <ContentPresenter Grid.Column="2" ContentSource="Header" Margin="{TemplateBinding MenuItem.Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> <TextBlock Grid.Column="4" Text="{TemplateBinding MenuItem.InputGestureText}" Margin="{TemplateBinding MenuItem.Padding}" Visibility="Collapsed" /> <Path Grid.Column="5" VerticalAlignment="Center" Margin="4,0" Fill="{TemplateBinding MenuItem.Foreground}" Data="{StaticResource RightArrow}" /> </Grid> <Popup x:Name="PART_Popup" AllowsTransparency="true" Placement="Right" VerticalOffset="-3" HorizontalOffset="-2" IsOpen="{Binding Path=IsSubmenuOpen,ResourceId=MenuScrollViewer}}"> <ItemsPresenter Margin="2" KeyboardNavigation.TabNavigation="Cycle" KeyboardNavigation.DirectionalNavigation="Cycle" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Grid.IsSharedSizeScope="true" /> </ScrollViewer> </ContentControl> </theme:SystemDropShadowChrome> </Popup> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsSuspendingPopupAnimation" Value="true"> <Setter TargetName="PART_Popup" Property="PopupAnimation" Value="None" /> </Trigger> <Trigger Property="IsHighlighted" Value="true"> <Setter TargetName="InnerBorder" Property="Stroke" Value="#D1DBF4FF" /> </Trigger> <Trigger Property="Icon" Value="{x:Null}"> <Setter TargetName="Icon" Property="Visibility" Value="Collapsed" /> </Trigger> <Trigger Property="IsChecked" Value="true"> <Setter TargetName="GlyphPanel" Property="Visibility" Value="Visible" /> <Setter TargetName="Icon" Property="Visibility" Value="Collapsed" /> </Trigger> <Trigger SourceName="PART_Popup" Property="Popup.HasDropShadow" Value="true"> <Setter TargetName="Shdw" Property="Margin" Value="0,5" /> <Setter TargetName="Shdw" Property="Color" Value="#71000000" /> </Trigger> <Trigger Property="IsHighlighted" Value="true"> <Setter TargetName="Bg" Property="Fill" Value="{StaticResource MenuItemSelectionFill}" /> <Setter TargetName="Bg" Property="Stroke" Value="#8571CBF1" /> </Trigger> <Trigger Property="IsEnabled" Value="false"> <Setter Property="Foreground" Value="#FF9A9A9A" /> <Setter TargetName="GlyphPanel" Property="Background" Value="#EEE9E9" /> <Setter TargetName="GlyphPanel" Property="BorderBrush" Value="#DBD6D6" /> <Setter TargetName="Glyph" Property="Fill" Value="#848589" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> <Style TargetType="{x:Type MenuItem}"> <Setter Property="OverridesDefaultStyle" Value="true" /> <Setter Property="HorizontalContentAlignment" Value="{Binding Path=HorizontalContentAlignment,RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" /> <Setter Property="VerticalContentAlignment" Value="{Binding Path=VerticalContentAlignment,RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" /> <Setter Property="Background" Value="Transparent" /> <Setter Property="Template" Value="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type MenuItem},ResourceId=SubmenuItemTemplateKey}}" /> <Style.Triggers> <Trigger Property="Role" Value="TopLevelHeader"> <Setter Property="Padding" Value="7,2,8,3" /> <Setter Property="Template" Value="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type MenuItem},ResourceId=TopLevelHeaderTemplateKey}}" /> </Trigger> <Trigger Property="Role" Value="TopLevelItem"> <Setter Property="Padding" Value="7,ResourceId=TopLevelItemTemplateKey}}" /> </Trigger> <Trigger Property="Role" Value="SubmenuHeader"> <Setter Property="Padding" Value="2,3,ResourceId=SubmenuHeaderTemplateKey}}" /> </Trigger> <Trigger Property="Role" Value="SubmenuItem"> <Setter Property="Padding" Value="2,3" /> </Trigger> </Style.Triggers> </Style> <Style TargetType="{x:Type Menu}"> <Setter Property="OverridesDefaultStyle" Value="true" /> <Setter Property="Background" Value="Black" /> <Setter Property="FontFamily" Value="{DynamicResource {x:Static SystemFonts.MenuFontFamilyKey}}" /> <Setter Property="FontSize" Value="{DynamicResource {x:Static SystemFonts.MenuFontSizeKey}}" /> <Setter Property="FontStyle" Value="{DynamicResource {x:Static SystemFonts.MenuFontStyleKey}}" /> <Setter Property="FontWeight" Value="{DynamicResource {x:Static SystemFonts.MenuFontWeightKey}}" /> <Setter Property="Foreground" Value="White" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Menu}"> <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true"> <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> </Application.Resources> </Application> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何在Windows上仅获取Ping测试的回复行
- 在Windows中识别unicode编码的文本文件的最好方法是什么?
- windows和linux生成的可执行文件之间有什么区别
- windows-phone-7 – Dotfuscator删除Windows Phone 7语言支
- windows – 没有QApplication或QCoreApplication的信号插槽
- windows – 具有日志记录的图形Ping实用程序
- Cent OS & Windows 双系统自定义引导菜单
- windows – Microsoft-HTTPAPI / 2.0使用的端口80
- windows-7 – 哪里可以下载适用于Windows 7的最新64位版Son
- 为Windows Phone 8构建ffmpeg
推荐文章
站长推荐
- 如何在Microsoft Azure上部署一个简单的静态微站
- windows-server-2008-r2 – 慢速写入Dell Server
- windows-7 – Windows交换文件:当我有8GB RAM时
- Windows服务 – 作为Windows服务开发应用程序的好
- 在Windows和Linux机器上使用Java程序创建新文件夹
- 从Windows到ARM Linux交叉编译Rust
- windows – 从通知区域中删除NotifyIcon
- 与Windows 10的初始RDP连接缓慢连接
- HP:Windows系统下收集AHS日志
- wpf – 无法从程序集PresentationFramework加载类
热点阅读