Пример #1
0
        /// <summary>
        ///     Adds the menu.
        /// </summary>
        /// <param name="menu">The menu.</param>
        /// <param name="parent">The parent.</param>
        private void AddMenu(Menu menu, ItemsControl parent)
        {
            // Prevent infinite loop
            if (menu.SubMenus.Count > 0)
            {
                foreach (var submenu in menu.SubMenus)
                {
                    var item = new TreeViewItem {
                        Header = submenu.DisplayName, IsExpanded = true, Tag = submenu
                    };

                    // GOOD OL' RECURSION
                    this.AddMenu(submenu, item);

                    parent.Items.Add(item);
                }
            }

            foreach (
                var treeItem in menu.Items.Select(item => new TreeViewItem {
                Header = item.DisplayName, Tag = item
            }))
            {
                parent.Items.Add(treeItem);
            }
        }
Пример #2
0
        /// <summary>
        ///     Adds the menu.
        /// </summary>
        /// <param name="menu">The menu.</param>
        /// <param name="parent">The parent.</param>
        private void AddMenu(Menu menu, ItemsControl parent)
        {
            // Prevent infinite loop
            if (menu.SubMenus.Count > 0)
            {
                foreach (var submenu in menu.SubMenus)
                {
                    var item = new TreeViewItem { Header = submenu.DisplayName, IsExpanded = true, Tag = submenu };

                    // GOOD OL' RECURSION
                    this.AddMenu(submenu, item);

                    parent.Items.Add(item);
                }
            }

            foreach (
                var treeItem in menu.Items.Select(item => new TreeViewItem { Header = item.DisplayName, Tag = item }))
            {
                parent.Items.Add(treeItem);
            }
        }
Пример #3
0
        /// <summary>
        ///     Handles the Click event of the LoadButton control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.Windows.RoutedEventArgs" /> instance containing the event data.</param>
        private void LoadButtonClick(object sender, RoutedEventArgs e)
        {
            var dialog = new OpenFileDialog {
                DefaultExt = ".json", Filter = "JSON File (*.json}|*.json"
            };

            var result = dialog.ShowDialog(this);

            if (result != true)
            {
                return;
            }

            this.Menu = JsonConvert.DeserializeObject <Menu>(
                File.ReadAllText(dialog.FileName),
                new JsonSerializerSettings()
            {
                PreserveReferencesHandling = PreserveReferencesHandling.Objects,
                ReferenceLoopHandling      = ReferenceLoopHandling.Serialize
            });
            this.UpdateTree();
        }
Пример #4
0
        /// <summary>
        ///     Handles the Click event of the LoadButton control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.Windows.RoutedEventArgs" /> instance containing the event data.</param>
        private void LoadButtonClick(object sender, RoutedEventArgs e)
        {
            var dialog = new OpenFileDialog { DefaultExt = ".json", Filter = "JSON File (*.json}|*.json" };

            var result = dialog.ShowDialog(this);

            if (result != true)
            {
                return;
            }

            this.Menu = JsonConvert.DeserializeObject<Menu>(
                File.ReadAllText(dialog.FileName),
                new JsonSerializerSettings()
                    {
                        PreserveReferencesHandling = PreserveReferencesHandling.Objects,
                        ReferenceLoopHandling = ReferenceLoopHandling.Serialize
                    });
            this.UpdateTree();
        }