2012-08-23 43 views
2

我在网格中有一个mainWindow,并且在这个网格内有一对wpf UserControls。 我还有三种方法通过鼠标控制网格内的移动。 MouseDown,MouseMoveMouseUp它工作正常。在WindowsFormsHost中使用鼠标WPF窗口移动

当我在这些UserControl中添加一个WindowsFormsHost时,它不再有效。我可以移动窗口,但WindowsFormsHost停留在同一个地方。

我想知道如何使用鼠标事件在网格内移动窗口,当我有一个WindowsFormsHost里面。

在此先感谢。

Regards, Felipe。

PS。这些是我用来在网格中移动UserControl的方法。

public void Control_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    isDragging = true; 
    var draggableControl = sender as UserControl; 
    clickPosition = e.GetPosition(this); 
    draggableControl.CaptureMouse(); 
} 

public void Control_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
{ 
    isDragging = false; 
    var draggable = sender as UserControl; 
    draggable.ReleaseMouseCapture(); 
} 

public void Control_MouseMove(object sender, MouseEventArgs e) 
{ 
    var draggableControl = sender as UserControl; 

    if (isDragging && draggableControl != null) 
    { 
     Point currentPosition = e.GetPosition(this.Parent as UIElement); 

     var transform = draggableControl.RenderTransform as TranslateTransform; 
     if (transform == null) 
     { 
      transform = new TranslateTransform(); 
      draggableControl.RenderTransform = transform; 
     } 

     transform.X = currentPosition.X - clickPosition.X; 
     transform.Y = currentPosition.Y - clickPosition.Y; 
    } 
} 

回答

1

也许尝试直接申请translateTransform到WindowsFormHost或看看会发生什么,如果你鼠标移动

+0

后使用WindowsFormHost.InvalidateVisual()太感谢你了! WindowsFormsHost.InvalidadeVisual()对我来说就像一个魅力!除了这个哈哈以外,我已经尝试了一切。 – Gentil