Hello. I am trying to make a context menu a user control so that it can be reused in multiple areas. The question I have is how should I assign the xamcontextmenu to the control in the xaml? The way it is now is a context menu within a context menu, I want to assign the context menu directly to the user control.
User Control I want to reuse:
<Grid Name="cmnuGrid"> <ig:XamContextMenu Opacity="1" Name="cmnuChart" Placement="MouseClick" BorderThickness="1" FontSize="12" Opening="evhContextMenu_Opening" Background="Cornsilk"> <ig:XamContextMenu.Style> <Style TargetType="ig:XamContextMenu"> <Setter Property="Background" Value="Cornsilk"/> </Style> </ig:XamContextMenu.Style> <ig:XamMenuItem Name="xmiChartOptions" Header="{Binding Path=Strings.Options, Source={StaticResource ViewResources}}" Height="30" Background="Cornsilk"> <ig:XamMenuItem.Icon> </ig:XamMenuItem.Icon> <ig:XamMenuItem Name="xmiFitChart" Header="{Binding Path=Strings.FitChart, Source={StaticResource ViewResources}}" Click="xmiFitChart_Click" Height="30" Background="Cornsilk" > <ig:XamMenuItem.Icon> </ig:XamMenuItem.Icon> </ig:XamMenuItem> </ig:XamMenuItem> <ig:XamMenuItem Name="xmiExportChartMenu" Header="{Binding Path=Strings.ExportChart, Source={StaticResource ViewResources}}" Height="30" Background="Cornsilk"> <ig:XamMenuItem.Icon> </ig:XamMenuItem.Icon> <ig:XamMenuItem Name="xmiExportChart" Header="{Binding Path=Strings.ExportChart, Source={StaticResource ViewResources}}" Height="30" Click="xmiExportChart_Click" > <ig:XamMenuItem.Icon> </ig:XamMenuItem.Icon> </ig:XamMenuItem> <ig:XamMenuItem Name="xmiExportOptionsChart" Header="{Binding Path=Strings.Options, Source={StaticResource ViewResources}}" Click="xmiExportOptionsChart_Click" Height="30" Background="Cornsilk"> <ig:XamMenuItem.Icon> </ig:XamMenuItem.Icon> </ig:XamMenuItem> </ig:XamMenuItem> </ig:XamContextMenu>
How I am assigning the context menu currently:
<ig:ContextMenuService.Manager > <ig:ContextMenuManager OpenMode="RightClick"> <ig:ContextMenuManager.ContextMenu > <ig:XamContextMenu> <mycontrols:ucChartContextMenu Name="cmnuTrendChart" ehFitChart="xmiTrendChartFitChart_Click" ehExportChart="xmiExportTrendChart_Click" /> </ig:XamContextMenu> </ig:ContextMenuManager.ContextMenu> </ig:ContextMenuManager> </ig:ContextMenuService.Manager> </mycontrols:XamDataChartEx>
Hi Panormitis,
Instead of using a UserControl you should change it to a XamContextMenu.
XAML:
<ig:XamContextMenu x:Class="Application.Namespace.ReusableContextMenu" xmlns:ig="http://schemas.infragistics.com/xaml" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Opacity="1" Placement="MouseClick" BorderThickness="1" FontSize="12" Opening="evhContextMenu_Opening" Background="Cornsilk"> <ig:XamContextMenu.Style> <Style TargetType="ig:XamContextMenu"> <Setter Property="Background" Value="Cornsilk"/> </Style> </ig:XamContextMenu.Style> <ig:XamMenuItem Header="Item 1"> <ig:XamMenuItem Header="Sub Item 1"/> <ig:XamMenuItem Header="Sub Item 2"/> <ig:XamMenuItem Header="Sub Item 3"/> </ig:XamMenuItem> <ig:XamMenuItem Header="Item 2"/> </ig:XamContextMenu>
CS:
public partial class ReusableContextMenu : XamContextMenu { public ReusableContextMenu() { InitializeComponent(); } private void evhContextMenu_Opening(object sender, OpeningEventArgs e) { } }
Then when you want to use this context menu:
<ig:ContextMenuService.Manager > <ig:ContextMenuManager OpenMode="RightClick"> <ig:ContextMenuManager.ContextMenu > <local:ReusableContextMenu/> </ig:ContextMenuManager.ContextMenu> </ig:ContextMenuManager> </ig:ContextMenuService.Manager>