FrameworkElement GetAdornerRoot(DependencyObject d) { var ret = VisualTreeHelperExtension.Ancestors(d) .OfType <FrameworkElement>() .Reverse() .FirstOrDefault(x => AdornerLayer.GetAdornerLayer(x) != null); return(ret); }
private void OnDragDelta(object sender, DragDeltaEventArgs e) { if (Target == null) { return; } // itemscontrolのitemscontainerを探す方法がよくわからない var container = VisualTreeHelperExtension .Ancestors(AssociatedObject) .OfType <UIElement>() .TakeUntilButNotIncluding(x => x is Canvas) .LastOrDefault(); if (container == null) { return; } Canvas.SetLeft(container, Math.Max(0, Canvas.GetLeft(container) + e.HorizontalChange)); Canvas.SetTop(container, Math.Max(0, Canvas.GetTop(container) + e.VerticalChange)); }