コード例 #1
0
        FrameworkElement GetAdornerRoot(DependencyObject d)
        {
            var ret = VisualTreeHelperExtension.Ancestors(d)
                      .OfType <FrameworkElement>()
                      .Reverse()
                      .FirstOrDefault(x => AdornerLayer.GetAdornerLayer(x) != null);

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