public void Update() { var list = new List<LayoutPartDescriptionGroupViewModel>(); _map = new Dictionary<Guid, LayoutPartDescriptionViewModel>(); var groups = Enum.GetValues(typeof(LayoutPartDescriptionGroup)).Cast<LayoutPartDescriptionGroup>(). Where(item => item != LayoutPartDescriptionGroup.Root). ToDictionary(item => item, item => new LayoutPartDescriptionGroupViewModel(item)); foreach (var module in ApplicationService.Modules) { var layoutDeclarationModule = module as ILayoutDeclarationModule; if (layoutDeclarationModule != null) foreach (var layoutPartDescription in layoutDeclarationModule.GetLayoutPartDescriptions()) { var layoutPartDescriptionViewModel = new LayoutPartDescriptionViewModel(layoutPartDescription); if (layoutPartDescription.Group == LayoutPartDescriptionGroup.Root) list.Add(layoutPartDescriptionViewModel); else groups[layoutPartDescription.Group].AddChild(layoutPartDescriptionViewModel); _map.Add(layoutPartDescription.UID, layoutPartDescriptionViewModel); } } list.AddRange(groups.Values.Where(item => item.ChildrenCount > 0)); list.Sort(Comparer); LayoutParts = new ObservableCollection<LayoutPartDescriptionGroupViewModel>(list); }
public LayoutPartViewModel(LayoutPartDescriptionViewModel layoutPartDescriptionViewModel) { LayoutPartDescriptionViewModel = layoutPartDescriptionViewModel; LayoutPart = new LayoutPart() { DescriptionUID = LayoutPartDescriptionViewModel.LayoutPartDescription.UID, UID = Guid.NewGuid(), }; Initialize(); LayoutPart.Properties = Content.Properties; }
public void Update(Layout layout) { _layout = layout; var map = new Dictionary<Guid, int>(); if (_layout != null) foreach (var layoutPart in _layout.Parts) if (map.ContainsKey(layoutPart.DescriptionUID)) map[layoutPart.DescriptionUID]++; else map.Add(layoutPart.DescriptionUID, 1); foreach (var layoutPart in LayoutParts) if (map.ContainsKey(layoutPart.LayoutPartDescription.UID)) layoutPart.Count = map[layoutPart.LayoutPartDescription.UID]; else layoutPart.Count = 0; SelectedLayoutPart = LayoutParts.FirstOrDefault(); }
public void AddLayoutPart(LayoutPartDescriptionViewModel layoutPartDescriptionViewModel, bool dragging) { var layoutPartViewModel = new LayoutPartViewModel(layoutPartDescriptionViewModel); LayoutParts.Add(layoutPartViewModel); ActiveLayoutPart = layoutPartViewModel; if (dragging) Manager.StartDragging(layoutPartViewModel); }