WPF, перетащите UserControl со многими детьми в Canvas Так медленно - PullRequest
0 голосов
/ 25 сентября 2018

Я использую несколько пользовательских элементов управления в качестве дочернего элемента, а Canvas - в качестве контейнера, имитирующего окно MDI, но когда я перетаскиваю элемент управления пользовательским, он перемещается так медленно!события следующие:

GTitle.MouseLeftButtonDown += GTitleMouseButtonDownHandler;
GTitle.MouseMove += MouseMoveHandler;
GTitle.MouseLeftButtonUp += GTitleMouseButtonUp;

и:

private void  GTitleMouseButtonDownHandler(object o,MouseButtonEventArgs e)
{
    oldPoint = e.GetPosition(MyParent); 
    GTitle.CaptureMouse();
}

private void MouseMoveHandler(object o, MouseEventArgs e)
{   
   Point MovePoint = e.GetPosition(MyParent);
   if (GTitle.IsMouseCaptured)
   {
       var offset = MovePoint - oldPoint;
       Position = new Point(Position.X + offset.X, Position.Y + offset.Y);
       oldPoint = MovePoint;
   }
}

private void GTitleMouseButtonUp(object sender, MouseButtonEventArgs e)
{
  if (GTitle.IsMouseCaptured)
      GTitle.ReleaseMouseCapture();
}

public Point Position
{
   get { return (Point)GetValue(PositionProperty); }
   set { SetValue(PositionProperty, value); }
}

public static readonly DependencyProperty PositionProperty =
        DependencyProperty.Register("Position", typeof(Point), typeof(ChildBaseEx2),
        new UIPropertyMetadata(new Point(-1, -1) ,new PropertyChangedCallback(PositionValueChanged)));

 private static void PositionValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
 {
    if ((Point)e.NewValue == (Point)e.OldValue)
       return;
    ChildBaseEx2 mdiChild = (ChildBaseEx2)sender;
    Point newPosition = (Point)e.NewValue;
    TranslateTransform translateTransform = mdiChild.RenderTransform as TranslateTransform;
    translateTransform.X = newPosition.X;
    translateTransform.Y = newPosition.Y;
 }

так, когда я перетаскиваю, пользовательский контроль движется нормально, но скорость немного медленная, мне нужна помощь, спасибо?Много ли детей оказали влияние?

...