private void ReclacYs() { SingleClassificationLayerVM[] layers = target.Layers.Select(l => (SingleClassificationLayerVM)l).ToArray(); VisualLayerPresentingVM[] vLayer = Layers.ToArray(); int length = layers.Length; double y = 0; for (int i = 0; i < length; i++) { SingleClassificationLayerVM vm = layers[i]; VisualLayerPresentingVM vvm = vLayer[i]; vvm.Y = y; y += vm.Length; } }
private void Layers_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { switch (e.Action) { case System.Collections.Specialized.NotifyCollectionChangedAction.Add: for (int i = 0; i < e.NewItems.Count; i++) { SingleClassificationLayerVM addedVM = (SingleClassificationLayerVM)e.NewItems[i]; addedVM.PropertyChanged += SingleClass_Vm_PropertyChanged; VisualLayerPresentingVM craftedVM = adapter(addedVM); craftedVM.AvailableWidth = columnWidth; if (e.NewItems.Count == 0) { Layers.Add(craftedVM); } else { Layers.Insert(e.NewStartingIndex + i, craftedVM); } } ReclacYs(); break; case System.Collections.Specialized.NotifyCollectionChangedAction.Remove: if (e.OldItems.Count != 1) { throw new InvalidOperationException(); } SingleClassificationLayerVM removedVM = (SingleClassificationLayerVM)e.OldItems[0]; removedVM.PropertyChanged -= SingleClass_Vm_PropertyChanged; Layers.RemoveAt(e.OldStartingIndex); ReclacYs(); break; default: throw new NotImplementedException(); } }