2010-07-19 44 views
5

我基於我收到的某些代碼的自定義菜單。它看起來不錯,但我會爲如何移除整個菜單項的薄黑邊而瘋狂嗎?!這個邊界/填充定義在哪裏?刪除菜單項周圍的薄邊框

由於任何WPF大師,可能幫助我:)

Valid XHTML http://img843.imageshack.us/img843/8813/testn.png

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

    <SolidColorBrush x:Key="HighlightedBackgroundBrush" Color="#003466" /> 
    <SolidColorBrush x:Key="MenuBackgroundBrush" Color="#003466" /> 
    <SolidColorBrush x:Key="NormalBorderBrush" Color="#FFFFFFFF" /> 
    <SolidColorBrush x:Key="SolidMenuFontBrush" Color="#FFFFFFFF" /> 
    <SolidColorBrush x:Key="HighlightedText" Color="#FFFFFFFF" /> 

    <Style x:Key="{x:Type Menu}" TargetType="{x:Type Menu}"> 
     <Setter Property="OverridesDefaultStyle" Value="True"/> 
     <Setter Property="SnapsToDevicePixels" Value="True"/> 
     <Setter Property="Height" Value="25"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Menu}"> 
        <Border Background="{DynamicResource AppBackground}" 
          BorderBrush="{DynamicResource AppBackground}" 
          BorderThickness="1"> 
         <StackPanel ClipToBounds="True" Orientation="Vertical" IsItemsHost="True"/> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
    <Style x:Key="{x:Type MenuItem}" TargetType="{x:Type MenuItem}"> 
     <Setter Property="OverridesDefaultStyle" Value="True"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type MenuItem}"> 
        <Border x:Name="Border" BorderThickness="1"> 
         <Grid Background="{DynamicResource AppBackground}"> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition x:Name="Col0" MinWidth="17" Width="Auto" SharedSizeGroup="MenuItemIconColumnGroup"/> 
           <ColumnDefinition Width="Auto" SharedSizeGroup="MenuTextColumnGroup"/> 
           <ColumnDefinition Width="Auto" SharedSizeGroup="MenuItemIGTColumnGroup"/> 
           <ColumnDefinition x:Name="Col3" /> 
          </Grid.ColumnDefinitions> 

          <!-- ContentPresenter to show an Icon if needed --> 
          <ContentPresenter Grid.Column="0" Margin="4,0,6,0" x:Name="Icon" VerticalAlignment="Center" ContentSource="Icon"/> 

          <!-- Glyph is a checkmark if needed for a checkable menu --> 
          <Grid Grid.Column="0" Visibility="Hidden" Margin="4,0,6,0" x:Name="GlyphPanel" VerticalAlignment="Center"> 
           <Path x:Name="GlyphPanelpath" VerticalAlignment="Center" Fill="{TemplateBinding Foreground}" Data="M0,2 L0,4.8 L2.5,7.4 L7.1,2.8 L7.1,0 L2.5,4.6 z" FlowDirection="LeftToRight"/> 
          </Grid> 

          <!-- Content for the menu text etc --> 
          <ContentPresenter Grid.Column="1" 
           Margin="{TemplateBinding Padding}" 
           x:Name="HeaderHost" 
           RecognizesAccessKey="True" 
           ContentSource="Header"/> 

          <!-- Content for the menu IGT --> 
          <ContentPresenter Grid.Column="2" 
           Margin="8,1,8,1" 
           x:Name="IGTHost" 
           ContentSource="InputGestureText" 
           VerticalAlignment="Center"/> 

          <!-- Arrow drawn path which points to the next level of the menu --> 
          <Grid Grid.Column="3" Margin="4,0,6,0" x:Name="ArrowPanel" VerticalAlignment="Center"> 
           <Path x:Name="ArrowPanelPath" HorizontalAlignment="Right" VerticalAlignment="Center" Fill="{TemplateBinding Foreground}" Data="M0,0 L0,8 L4,4 z"/> 
          </Grid> 

          <!-- The Popup is the body of the menu which expands down or across depending on the level of the item --> 
          <Popup IsOpen="{Binding Path=IsSubmenuOpen, RelativeSource={RelativeSource TemplatedParent}}" Placement="Right" x:Name="SubMenuPopup" Focusable="false" PopupAnimation="{DynamicResource {x:Static SystemParameters.MenuPopupAnimationKey}}"> 
           <Border x:Name="SubMenuBorder" BorderBrush="{Binding Path=Foreground, RelativeSource={RelativeSource AncestorType={x:Type Menu}}}" BorderThickness="1" Padding="2,2,2,2"> 
            <Grid x:Name="SubMenu" Grid.IsSharedSizeScope="True"> 
             <!-- StackPanel holds children of the menu. This is set by IsItemsHost=True --> 
             <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Cycle"/> 
            </Grid> 
           </Border> 
          </Popup> 
         </Grid> 
        </Border> 

        <!-- These triggers re-configure the four arrangements of MenuItem to show different levels of menu via Role --> 
        <ControlTemplate.Triggers> 
         <!-- Role = TopLevelHeader : this is the root menu item in a menu; the Popup expands down --> 
         <Trigger Property="Role" Value="TopLevelHeader"> 
          <Setter Property="Padding" Value="6,1,6,1"/> 
          <Setter Property="Placement" Value="Bottom" TargetName="SubMenuPopup"/> 
          <Setter Property="MinWidth" Value="2" TargetName="Col0"/> 
          <Setter Property="Width" Value="Auto" TargetName="Col3"/> 
          <Setter Property="Visibility" Value="Collapsed" TargetName="Icon"/> 
          <Setter Property="Visibility" Value="Collapsed" TargetName="GlyphPanel"/> 
          <Setter Property="Visibility" Value="Collapsed" TargetName="IGTHost"/> 
          <Setter Property="Visibility" Value="Collapsed" TargetName="ArrowPanel"/> 
         </Trigger> 

         <!-- Role = TopLevelItem : this is a child menu item from the top level without any child items--> 
         <Trigger Property="Role" Value="TopLevelItem"> 
          <Setter Property="Padding" Value="6,1,6,1"/> 
          <Setter Property="Visibility" Value="Collapsed" TargetName="ArrowPanel"/> 
         </Trigger> 

         <!-- Role = SubMenuHeader : this is a child menu item which does not have children --> 
         <Trigger Property="Role" Value="SubmenuHeader"> 
          <Setter Property="DockPanel.Dock" Value="Top"/> 
          <Setter Property="Padding" Value="0,2,0,2"/> 
         </Trigger> 

         <!-- Role = SubMenuItem : this is a child menu item which has children--> 
         <Trigger Property="Role" Value="SubmenuItem"> 
          <Setter Property="DockPanel.Dock" Value="Top"/> 
          <Setter Property="Padding" Value="0,2,0,2"/> 
          <Setter Property="Visibility" Value="Collapsed" TargetName="ArrowPanel"/> 
         </Trigger> 
         <Trigger Property="IsSuspendingPopupAnimation" Value="true"> 
          <Setter Property="PopupAnimation" Value="None" TargetName="SubMenuPopup"/> 
         </Trigger> 

         <!-- If no Icon is present the we collapse the Icon Content --> 
         <Trigger Property="Icon" Value="{x:Null}"> 
          <Setter Property="Visibility" Value="Collapsed" TargetName="Icon"/> 
         </Trigger> 

         <!-- The GlyphPanel contains the CheckMark --> 
         <Trigger Property="IsChecked" Value="true"> 
          <Setter Property="Visibility" Value="Visible" TargetName="GlyphPanel"/> 
          <Setter Property="Visibility" Value="Collapsed" TargetName="Icon"/> 
         </Trigger> 

         <!-- Using the system colors for the Menu Highlight and IsEnabled--> 
         <Trigger Property="IsHighlighted" Value="true"> 
          <Setter Property="Background" Value="{DynamicResource HighlightedBackgroundBrush}" TargetName="Border"/> 
          <Setter Property="Foreground" Value="{DynamicResource HighlightedText}"/> 
          <Setter Property="BorderBrush" Value="{DynamicResource NormalBorderBrush}" TargetName="Border"/> 
         </Trigger> 
         <Trigger Property="IsHighlighted" Value="false"> 
          <Setter Property="Background" Value="{DynamicResource AppBackground}" TargetName="Border"/> 
          <Setter Property="Foreground" Value="{DynamicResource SolidMenuFontBrush}"/> 
          <Setter Property="BorderBrush" Value="{DynamicResource AppBackground}" TargetName="Border"/> 
         </Trigger> 
         <Trigger Property="IsEnabled" Value="false"> 
          <Setter Property="Foreground" Value="LightGray"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</ResourceDictionary> 

回答

2
... 
<!-- The Popup is the body of the menu which expands down or across depending on the level of the item --> 
<Popup ...> 
    <Border x:Name="SubMenuBorder" ... Padding="0">...</Border>...</Popup> 
+0

沒有解決任何問題!逐像素像素相同.... – 2010-07-19 14:00:26

+0

你是好!令人印象深刻。非常感謝! – 2010-07-20 10:44:38