1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
9
using System.Windows.Controls;
13
namespace ICSharpCode.Data.EDMDesigner.Core.UI.UserControls.ContextMenu
15
public static class MenuContainerBase
17
internal static void AddChild(object child, Action onItemVisibleChanged)
19
var menuSeparator = child as MenuSeparator;
20
if (menuSeparator != null)
22
menuSeparator.SetVisibilityBinding();
25
var item = child as FrameworkElement;
27
item.IsVisibleChanged += delegate { onItemVisibleChanged(); };
30
public static MenuItem GetMenuItem(this IMenuContainer menuContainer, params string[] menuNames)
32
if (menuContainer == null)
34
var itemsControl = (ItemsControl)menuContainer;
35
foreach (var menuName in menuNames)
37
itemsControl = itemsControl.Items.OfType<ItemsControl>().FirstOrDefault(mi => mi.Name == menuName);
38
if (itemsControl == null)
41
return itemsControl as MenuItem;
44
public static Separator GetMenuSeparator(this IMenuContainer menuContainer, params string[] menuNames)
46
if (menuContainer == null)
48
ItemsControl itemsControl;
49
if (menuNames.Length == 1)
50
itemsControl = (ItemsControl)menuContainer;
52
itemsControl = menuContainer.GetMenuItem(menuNames.Take(menuNames.Length - 1).ToArray());
53
return itemsControl.Items.OfType<Separator>().FirstOrDefault(s => s.Name == menuNames[menuNames.Length - 1]);