Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
45
Reusable xamcontextmenu user control
posted

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>   

  • 34510
    Verified Answer
    Offline posted

    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>