private ComponentViewModel BuildComponentViewModelHierarchy( Component rootComponent) { var rootComponentVM = new ComponentViewModel(EventAggregator, MessageService, rootComponent); Queue <Component> componentsQueue = new Queue <Component>(); componentsQueue.Enqueue(rootComponent); Queue <ComponentViewModel> componentsVMQueue = new Queue <ComponentViewModel>(); componentsVMQueue.Enqueue(rootComponentVM); //użyte przemierzanie drzewa wszerz żeby zbudować odpowiadające drzewo View Modeli. while (componentsQueue.Count > 0) { var currentComponent = componentsQueue.Dequeue(); var currentComponentVM = componentsVMQueue.Dequeue(); foreach (var child in currentComponent.Children) { componentsQueue.Enqueue(child); var newComponentVM = new ComponentViewModel(EventAggregator, MessageService, child); componentsVMQueue.Enqueue(newComponentVM); currentComponentVM.Children.Add(newComponentVM); } } return(rootComponentVM); }
private void UpdateParentChildRelation( ComponentViewModel oldParent, ComponentViewModel newParent) { if (newParent == null && oldParent.children.Contains(this)) { oldParent.children.Remove(this); } else if (!parent.children.Contains(this)) { parent.children.Add(this); } }