public async Task SetupSideMenu() { MessageCount = DS.db.Count <CoreMessageBase>(a => a.DueDate <= DateTime.Now && a.StatusMessage == "En attente"); // Init actions MainMenuCategories.Clear(); // sideMenu.VerticalScrollBarVisibility = ScrollBarVisibility.Auto; // Load config models var models = new List <IDocument>(); var config = new XmlDocument(); config.Load("Modules/Models.xml"); // get ModulesERP var modules = DataHelpers.Modules;// GetMongoDataSync("ModuleErp") as IEnumerable<ModuleErp>; config.DocumentElement.RemoveAll(); var TopMenus = modules.Where(z => !string.IsNullOrEmpty(z.GroupeModule)).Select(a => _(a.GroupeModule)).Distinct(); if (MenuPanelLoaded == false) { MenuPanel.Children.Clear(); } foreach (var groupe in TopMenus) { var moduleOfGroupe = modules.Where(a => _(a.GroupeModule) == groupe).OrderBy(a => a.ModuleMenuIndex); //(2) string.Empty makes cleaner code XmlElement section = config.CreateElement(string.Empty, "section", string.Empty); section.SetAttribute("header", groupe); section.SetAttribute("icon", "Desktop"); if (MenuPanelLoaded == false) { string _icon = ""; var _savedIcon = ModuleIcons.ModuleIcon.TryGetValue(groupe, out _icon); //if (_savedIcon) //{ // icon found Button menubtn = new Button(); PackIcon pi = new PackIcon() { Kind = PackIconKind.CheckboxMarkedCircleOutline, Height = 22, Width = 22 }; try { pi.Kind = (PackIconKind)Enum.Parse(typeof(PackIconKind), _icon); pi.Height = 22; pi.Width = 22; } catch { } Border border = new Border(); border.BorderThickness = new Thickness(0); border.Margin = new Thickness(0); border.HorizontalAlignment = HorizontalAlignment.Left; border.Child = menubtn; var sp = new StackPanel { Orientation = Orientation.Horizontal }; sp.Children.Add(pi); sp.Children.Add(new TextBlock { Text = groupe, Foreground = Brushes.White, Margin = new Thickness(10, 0, 10, 0) }); menubtn.Content = sp; menubtn.Click += Menubtn_Click; menubtn.Tag = new ArrayList { groupe, pi }; ShadowAssist.SetShadowDepth(menubtn, ShadowDepth.Depth0); // menubtn.ToolTip = groupe; // BorderThickness="0" BorderBrush="#F5F6F7" menubtn.BorderThickness = new Thickness(0); // menubtn.Width = 55; menubtn.Height = 40; menubtn.Style = App.Current.TryFindResource("MenuButtonHd") as Style; border.Child = menubtn; MenuPanel.Children.Add(border); NotifyOfPropertyChange("MenuPanel"); //} } foreach (var module in moduleOfGroupe) { XmlElement document = config.CreateElement(string.Empty, "item", string.Empty); //header ="Tiers" icon="Users" description="" class="Ovresko.Generix.Core.Modules.Tier" document.SetAttribute("header", module.Libelle); document.SetAttribute("icon", "Users"); document.SetAttribute("class", module.ClassName); if (module.IsInstanceModule) { document.SetAttribute("instance", "getInstance"); } section.AppendChild(document); } config.DocumentElement.AppendChild(section); } MenuPanelLoaded = true; config.Save("Modules/Models.xml"); config.Load("Modules/Models.xml"); parentStack = new StackPanel(); // Iteerate over items foreach (XmlNode node in config.DocumentElement.ChildNodes) { // iterate over sections Console.Write(node.ChildNodes); var header = node.Attributes["header"].Value; // ExpanderMenu expander = new ExpanderMenu(); // var nodeTree = new TreeViewItemExCategory(header, new Li); var Children = new List <TreeViewItemEx>(); // var items = node.ChildNodes; foreach (XmlNode item in items) { var modelHeader = item.Attributes["header"].Value; var modelClass = item.Attributes["class"].Value; var modelIcon = item.Attributes["icon"].Value; var modelInstance = item.Attributes["instance"]?.Value; var itemNode = new TreeViewItemEx(modelHeader, modelHeader); itemNode.NodeXml = item; // itemNode.HeaderContent = new Button() { Content = modelHeader }; //var i = new FontAwesome.WPF.ImageAwesome(); //// i.Icon = (FontAwesomeIcon)Enum.Parse(typeof(FontAwesomeIcon), modelIcon); //i.Icon = FontAwesomeIcon.Plus; //i.Foreground = System.Windows.Media.Brushes.LightGray; // itemNode.HeaderIcon = modelIcon; Children.Add(itemNode); } var Category = new TreeViewItemExCategory(header, Children.ToArray()); MainMenuCategories.Add(Category); } NotifyOfPropertyChange("sideMenu"); }
public async Task OpenMenuItem(TreeViewItemEx nodeZ) { var node = nodeZ.NodeXml; var modelHeader = node.Attributes["header"].Value; var modelClass = node.Attributes["class"].Value; var modelIcon = node.Attributes["icon"].Value; var ins = node.Attributes["instance"]; try { // var found = Items.FirstOrDefault(a => a.DisplayName == modelHeader); //if (found != null) //{ // ActivateItem(found); //} //else //{ if (ins == null) { try { Type type = DataHelpers.GetTypesModule.Resolve(modelClass); if (type == null) { return; } var baseView = await DataHelpers.GetBaseViewModelScreen(type, aggre, false); // var control = await BaseViewModel.Create(Type.GetType(modelClass), this, aggre, windowManager); baseView.DisplayName = modelHeader; // Items.Add(baseView); ActivateItem(baseView); } catch (Exception s) { DataHelpers.ShowMessageError(s); } } else { try { var isntance = ins.Value; Type t = DataHelpers.GetTypesModule.Resolve(modelClass); if (t == null) { return; } var one = Activator.CreateInstance(t); var oneInstance = (IDocument)one.GetType() .GetMethod(isntance). Invoke(one, null); if (oneInstance == null) { return; } this.OpenScreen(await DetailViewModel.Create(oneInstance, oneInstance.GetType(), aggre, this), $"{modelHeader}"); } catch (Exception s) { DataHelpers.ShowMessageError(s); return; } } // } } catch (Exception s) { DataHelpers.ShowMessage(s.Message); } }