gpt4 book ai didi

wpf - 如何删除菜单项 (WPF) 的 "button"效果

转载 作者:行者123 更新时间:2023-12-02 00:40:48 28 4
gpt4 key购买 nike

当鼠标悬停在菜单项(第一级)上时,它会显示 3D 按钮效果。如何删除?

谢谢。


编辑:

尝试过

<Style TargetType="MenuItem">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="Transparent">
<Setter Property="BorderThickness" Value="0">
</Trigger>
</Style.Triggers>
</Style>

没有效果。

菜单 XAML:

<Window x:Class="UCWPF.Window3"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:conv="clr-namespace:UCWPF.Converters"
Title="Window3" Height="600" Width="600"
Background="{StaticResource WindowBackgroundBrush}"
>

<StackPanel Style="{StaticResource WindowContainerStyle}">
<Menu>
<MenuItem Header="New" Icon="{StaticResource ImageNew}" />
<MenuItem Header="Open" Icon="{StaticResource ImageOpen}" />
<MenuItem Header="Save" Icon="{StaticResource ImageSave}" />
<MenuItem Header="Export" Icon="{StaticResource ImageExport}" />
</Menu>
...

截图如下: bordereffect http://img408.imageshack.us/img408/6517/menuborder.png


编辑 2:

强大的力量带来伟大的......复杂性:(。

看来应该重新定义整个菜单模板才能达到我的目的。 3D 效果由 MenuItem 子边框(用 Snoop 标识)提供,在鼠标悬停时,将其 BorderStyle 设置为凸起。我不知道在 <Style TargetType="MenuItem"> 中是否可以触摸边框样式元素,任何反馈将不胜感激。

最佳答案

<Style x:Key="{x:Type MenuItem}" TargetType="{x:Type MenuItem}">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Style.Triggers>
<Trigger Property="Role" Value="TopLevelHeader">
<Setter Property="Template" Value="{StaticResource {x:Static MenuItem.TopLevelHeaderTemplateKey}}"/>
<Setter Property="Grid.IsSharedSizeScope" Value="true"/>
</Trigger>
</Style.Triggers>

  <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="{DynamicResource NormalBrush}"
BorderBrush="{StaticResource SolidBorderBrush}"
BorderThickness="1" >
<ScrollViewer CanContentScroll="True"
Style="{StaticResource MenuScrollViewer}">
<StackPanel
IsItemsHost="True"
KeyboardNavigation.DirectionalNavigation="Cycle" />
</ScrollViewer>
</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="{StaticResource NormalBrush}"/>
<Setter TargetName="Border" Property="BorderBrush" Value="Transparent"/>
</Trigger>
<!--Snippettoplevelheader-->
<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>
<!--/Snippettoplevelheader-->
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
</Trigger>
</ControlTemplate.Triggers>

触发器 IsHighlighted 定义鼠标悬停时的样式,如果移除触发器,当鼠标移到顶部菜单上时不显示任何内容

参见 http://msdn.microsoft.com/en-us/library/ms771597%28VS.85%29.aspx更多控件样式示例

关于wpf - 如何删除菜单项 (WPF) 的 "button"效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2643271/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com