Reputation: 125
I have context menu when I right click on datagrid. It works exactly what I want but issue is, this menu style override existing menu style. I want to apply ControlTemplate only to this menu. Pls help.
Here is 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>
Here is Code to apply Menu:
eCell.ContextMenu = (ContextMenu)FindResource("cellContextMenu");
Thanks Dee
Upvotes: 0
Views: 2472
Reputation: 4091
I would try to define the ControlTemplate inside the 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>
...or set the Style of the MenuItem in 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>
Upvotes: 1