Пример #1
0
 void RecursiveFillChildren(ItemCollection source, IEnumerable <IRuntimeModel> children)
 {
     foreach (var item in children)
     {
         if (item.IsSeparator)
         {
             source.Add(new Separator {
                 UseLayoutRounding = true,
             });
         }
         else
         {
             var menuItem = new RuntimeMenuItem(item);
             menuItem.Click += OnMenuItemClicked;
             source.Add(menuItem);
             RecursiveFillChildren(menuItem.Items, item.Children);
         }
     }
 }
Пример #2
0
        void FillSource(ItemCollection source, IEnumerable <IRuntimeModel> model)
        {
            foreach (var item in source.OfType <MenuItem> ())
            {
                item.Click -= OnMenuItemClicked;
                foreach (var subItem in item.Items.OfType <MenuItem> ())
                {
                    subItem.Click -= OnMenuItemClicked;
                }
            }

            source.Clear();

            foreach (var item in model)
            {
                if (item.HasParent)
                {
                    continue;
                }

                if (item.IsSeparator)
                {
                    source.Add(new Separator {
                        UseLayoutRounding = true,
                    });
                }
                else
                {
                    var menuItem = new RuntimeMenuItem(item);
                    menuItem.Click += OnMenuItemClicked;
                    foreach (var child in item.Children)
                    {
                        var childMenuItem = new RuntimeMenuItem(item);
                        childMenuItem.Click += OnMenuItemClicked;
                        menuItem.Items.Add(childMenuItem);
                    }
                    source.Add(menuItem);
                }
            }
        }