protected virtual void OnGettingLayerListItemContextMenuItems(GettingLayerListItemContextMenuItemsEventArgs e)
        {
            EventHandler <GettingLayerListItemContextMenuItemsEventArgs> handler = GettingLayerListItemContextMenuItems;

            if (handler != null)
            {
                handler(this, e);
            }
        }
        public ObservableCollection <MenuItem> GetLayerListContextMenuItems(LayerListItem layerListItem)
        {
            ObservableCollection <MenuItem> menuItems = null;

            GettingLayerListItemContextMenuItemsEventArgs gettingLayerListItemContextMenuItemsEventArgs = new GettingLayerListItemContextMenuItemsEventArgs(null);

            OnGettingLayerListItemContextMenuItems(gettingLayerListItemContextMenuItemsEventArgs);
            if (!gettingLayerListItemContextMenuItemsEventArgs.Cancel)
            {
                menuItems = GetLayerListContextMenuItemsCore(layerListItem);

                GottenLayerListItemContextMenuItemsEventArgs gottenLayerListItemContextMenuItemsEventArgs = new GottenLayerListItemContextMenuItemsEventArgs(menuItems);
                OnGottenLayerListItemContextMenuItems(gottenLayerListItemContextMenuItemsEventArgs);

                IEnumerable <MenuItem> resultMenuItems = gettingLayerListItemContextMenuItemsEventArgs.MenuItems.Concat(gottenLayerListItemContextMenuItemsEventArgs.MenuItems);
                if (layerListItem.ConcreteObject is Layer)
                {
                    menuItems = OrderMenuItems(new ObservableCollection <MenuItem>(resultMenuItems), (Layer)layerListItem.ConcreteObject);
                }
                else
                {
                    menuItems = new ObservableCollection <MenuItem>(resultMenuItems);
                }
            }
            else
            {
                menuItems = gettingLayerListItemContextMenuItemsEventArgs.MenuItems;
            }

            if (menuItems != null)
            {
                MenuItem menuItem = menuItems.FirstOrDefault(m => m.Header.Equals(GisEditor.LanguageManager.GetStringResource("MapElementsListPluginProperties")));
                if (menuItem != null)
                {
                    menuItems.Remove(menuItem);
                    menuItems.Add(menuItem);
                }
            }

            return(menuItems);
        }