Я использую несколько пользовательских элементов управления в качестве дочернего элемента, а 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;
}
так, когда я перетаскиваю, пользовательский контроль движется нормально, но скорость немного медленная, мне нужна помощь, спасибо?Много ли детей оказали влияние?