2012-05-11 18 views
0

У меня есть контекстное меню, когда я нажимаю правой кнопкой мыши на datagrid. Он работает именно так, как я хочу, но проблема в том, что этот стиль меню отменяет существующий стиль меню. Я хочу применить ControlTemplate только к этому меню. Помощь Pls.wpf ContextMenu Style

Вот 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> 

Вот код, чтобы применить меню:

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

Благодаря Ди

ответ

1

Я бы попытаться определить ControlTemplate внутри 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> 

... или установить стиль элемента MenuItem в 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> 
Смежные вопросы