private void ElementOrderViewModel_SelectedItemsChanged(object sender, NotifyCollectionChangedEventArgs e) { if (!_selectionChanging) { _selectionChanging = true; //Console.Out.WriteLine($"Element View Model changed {e.Action}"); if (e.Action == NotifyCollectionChangedAction.Reset) { DrawingPanelViewModel.DeselectAll(); } if (e.Action == NotifyCollectionChangedAction.Remove) { var lvm = e.OldItems.Cast <ElementModelViewModel>().SelectMany(x => x.GetLeafEnumerator()); DrawingPanelViewModel.Deselect(lvm); } if (e.Action == NotifyCollectionChangedAction.Add) { var models = e.NewItems.Cast <ElementModelViewModel>().SelectMany(x => x.GetLeafEnumerator()); DrawingPanelViewModel.Select(models); } _selectionChanging = false; } }
/// <summary> /// Method to invoke when the Delete command is executed. /// </summary> private void Delete() { //PropModelServices.Instance().RemoveElementModels(ElementTreeViewModel.SelectedItems.Select(x => x.ElementModel)); var itemsToDelete = ElementTreeViewModel.SelectedItems.ToList(); ElementTreeViewModel.SelectedItems.Clear(); itemsToDelete.ForEach(x => x.RemoveFromParent()); DrawingPanelViewModel.DeselectAll(); DrawingPanelViewModel.RefreshLightViewModels(); ElementOrderViewModel.RefreshElementLeafViewModels(); }