2012-05-11 3 views
0

J'ai un menu contextuel lorsque je fais un clic droit sur DataGrid. Cela fonctionne exactement ce que je veux mais le problème est, ce style de menu remplace le style de menu existant. Je veux appliquer ControlTemplate uniquement à ce menu. Pls aide.wpf ContextMenu Style

Voici XAML

<ContextMenu x:Key="cellContextMenu"> 
    <MenuItem Header="Insert symbol" Margin="0,0,0,0" HorizontalContentAlignment="Right"> 
     <StackPanel Orientation="Horizontal" Margin="0,0,0,0"> 
      <wpfc:SymbolController x:Name="dgSymbolControl" Width="400" Height="400" value="{Binding Path=SelectedSymbolItem, Mode=TwoWay, diagnostics:PresentationTraceSources.TraceLevel=High}"></wpfc:SymbolController> 
      <TextBlock FontFamily="DYMObvba" Text="{Binding ElementName=dgSymbolControl, Path=value}" /> 
     </StackPanel> 
    </MenuItem> 
</ContextMenu> 
<ControlTemplate x:Key="{x:Static MenuItem.SubmenuItemTemplateKey}" TargetType="{x:Type MenuItem}"> 
    <Grid> 
     <Border Name="Check" Visibility="Collapsed" Margin="0,0,0,0"></Border> 
     <ContentPresenter Grid.Column="1" ContentSource="Header" RecognizesAccessKey="True"/> 
    </Grid> 
</ControlTemplate> 

Voici le code pour appliquer le menu:

eCell.ContextMenu = (ContextMenu)FindResource("cellContextMenu"); 

Merci Dee

Répondre

1

Je voudrais essayer de définir la ControlTemplate à l'intérieur du ContextMenu:

<ContextMenu x:Key="cellContextMenu"> 
<ContextMenu.Resources> 
... 
<ControlTemplate x:Key="{x:Static MenuItem.SubmenuItemTemplateKey}" TargetType="{x:Type MenuItem}"> 
    <Grid> 
     <Border Name="Check" Visibility="Collapsed" Margin="0,0,0,0"></Border> 
     <ContentPresenter Grid.Column="1" ContentSource="Header" RecognizesAccessKey="True"/> 
    </Grid> 
</ControlTemplate> 
</ContextMenu.Resources> 
    <MenuItem Header="Insert symbol" Margin="0,0,0,0" HorizontalContentAlignment="Right"> 
     <StackPanel Orientation="Horizontal" Margin="0,0,0,0"> 
      <wpfc:SymbolController x:Name="dgSymbolControl" Width="400" Height="400" value="{Binding Path=SelectedSymbolItem, Mode=TwoWay, diagnostics:PresentationTraceSources.TraceLevel=High}"></wpfc:SymbolController> 
      <TextBlock FontFamily="DYMObvba" Text="{Binding ElementName=dgSymbolControl, Path=value}" /> 
     </StackPanel> 
    </MenuItem> 
</ContextMenu> 

... ou définir le style de l'élément de menu en XAML:

<ContextMenu x:Key="cellContextMenu"> 
    <MenuItem Style="MyMenuStyle" Header="Insert symbol" Margin="0,0,0,0" HorizontalContentAlignment="Right"> 
     <StackPanel Orientation="Horizontal" Margin="0,0,0,0"> 
      <wpfc:SymbolController x:Name="dgSymbolControl" Width="400" Height="400" value="{Binding Path=SelectedSymbolItem, Mode=TwoWay, diagnostics:PresentationTraceSources.TraceLevel=High}"></wpfc:SymbolController> 
      <TextBlock FontFamily="DYMObvba" Text="{Binding ElementName=dgSymbolControl, Path=value}" /> 
     </StackPanel> 
    </MenuItem> 
</ContextMenu> 

<Style x:Key="MyMenuStyle" TargetType="{x:Type MenuItem}"> 
    <ControlTemplate x:Key="{x:Static MenuItem.SubmenuItemTemplateKey}" TargetType="{x:Type MenuItem}"> 
     <Grid> 
      <Border Name="Check" Visibility="Collapsed" Margin="0,0,0,0"></Border> 
      <ContentPresenter Grid.Column="1" ContentSource="Header" RecognizesAccessKey="True"/> 
     </Grid> 
    </ControlTemplate> 
</Style>