2011-05-06 5 views
6

Je cherche un bon exemple sur les styles ContextMenu et ContextMenu dans WPF. Ce que je voudrais, c'est une décomposition de la façon dont ContextMenu, Menu et MenuItems jouent ensemble. D'après ce que j'ai trouvé jusqu'à présent, il semble que je puisse en faire partie mais pas tout ce que je veux. Un exemple complet de style de chaque pièce serait génial ou un article qui le traverse serait encore mieux.Styling ContextMenu et éléments ContextMenu

+0

double possible de [par défaut ContextMenu Style - WPF ] (http://stackoverflow.com/questions/641634/default-contextmenu-style-wpf) – adeady

Répondre

1

est ici un moyen de style d'un contextMenu, pour enlever le côté gauche de celui-ci:

<Style x:Key="ContextMenuStyle1" TargetType="{x:Type ContextMenu}"> 
    <Setter Property="Background" Value="{DynamicResource MenuBackgroundBrush}"/> 
    <Setter Property="BorderThickness" Value="1"/> 
    <Setter Property="BorderBrush" Value="{DynamicResource WindowBorderBrush}"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ContextMenu}"> 
       <Border Uid="Border_93"> 
        <Border.Style> 
         <Style TargetType="{x:Type Border}"> 
          <Setter Property="Tag" Value="{DynamicResource {x:Static SystemParameters.DropShadowKey}}"/> 
          <Style.Triggers> 
           <DataTrigger Binding="{Binding Tag, RelativeSource={RelativeSource Self}}" Value="True"> 
            <Setter Property="Background" Value="Transparent"/> 
            <Setter Property="Padding" Value="0,0,5,5"/> 
            <Setter Property="Effect"> 
             <Setter.Value> 
              <DropShadowEffect BlurRadius="4" Opacity="0.8" ShadowDepth="1"/> 
             </Setter.Value> 
            </Setter> 
           </DataTrigger> 
          </Style.Triggers> 
         </Style> 
        </Border.Style> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

, utilisez-le:

<StackPanel x:Name="LayoutRoot"> 
    <Button Content="Click for ContextMenu" Width="30" HorizontalAlignment="Center" VerticalAlignment="Center"> 
     <Button.ContextMenu> 
      <ContextMenu Template="{DynamicResource ContextMenuControlTemplate1}" Style="{DynamicResource ContextMenuStyle1}"> 
       <MenuItem Header="File"/> 
       <MenuItem Header="Edit"/> 
       <MenuItem Header="View"/> 
       <MenuItem Header="Recent Files"/> 
        <MenuItem Header="file1.txt"/> 
        <MenuItem Header="file2.txt"/> 
      </ContextMenu> 
     </Button.ContextMenu> 
</Button> 

+3

Intéressant comment vous venez d'arracher cette réponse: http://stackoverflow.com/a/3284160/478049 – techvice