2010-04-15 61 views
3

當鼠標位於菜單項(第一級)上時,它會顯示3D按鈕效果。這怎麼能被刪除?如何刪除菜單項(WPF)的「按鈕」效果

謝謝。


編輯

試圖

<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">元素內是否可以觸及該邊框樣式,任何反饋都將不勝感激。

+0

發佈你的菜單XAML,也許是一個截圖。 – 2010-04-15 07:02:19

+0

現在發佈WindowContainerStyle。你需要做的是定義一個菜單和/或menuitem的新樣式,它有你喜歡的外觀,而不是WindowContainerStyle中的任何東西。 – 2010-04-15 13:29:22

回答

2
<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

1
<MenuItem Header="Menu..."> 
      <MenuItem Header="(none)"/> 
      <Separator/> 

      <MenuItem> 
       <MenuItem.Template> 
        <ControlTemplate> 
         <ItemsControl ItemsSource="{Binding Items}"> 
          <ItemsControl.ItemTemplate> 
           <DataTemplate> 
            <MenuItem Header="{Binding .}"/> 
           </DataTemplate> 
          </ItemsControl.ItemTemplate> 
         </ItemsControl> 
        </ControlTemplate> 
       </MenuItem.Template> 
      </MenuItem> 
     </MenuItem> 
相關問題