コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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();
            }
        }