private static void OnItemsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var   adorner         = d as SelectedItemsAdorner;
            Point initialPosition = adorner.CurrentPosition;
            var   draggables      = adorner.Items
                                    .OfType <IDraggable>()
                                    .Where(pa => pa is IPositionAware)
                                    .Where(ipa => ipa.IsDragging).ToArray();

            adorner._canvas.Children.Clear();
            foreach (var item in draggables.Cast <IPositionAware>())
            {
                Vector           offset = item.GetMiddlePoint() - initialPosition;
                ContentPresenter cc     = new ContentPresenter()
                {
                    Content = item
                };
                SelfCenteredCanvas.SetOffsetX(cc, offset.X);
                SelfCenteredCanvas.SetOffsetY(cc, offset.Y);
                adorner._canvas.Children.Add(cc);
            }
        }