在WindowsFormsHost中使用鼠标WPF窗口移动
问题描述:
我在网格中有一个mainWindow,并且在这个网格内有一对wpf UserControls。 我还有三种方法通过鼠标控制网格内的移动。 MouseDown
,MouseMove
和MouseUp
它工作正常。在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;
}
}
答
也许尝试直接申请translateTransform到WindowsFormHost或看看会发生什么,如果你鼠标移动
后使用WindowsFormHost.InvalidateVisual()太感谢你了! WindowsFormsHost.InvalidadeVisual()对我来说就像一个魅力!除了这个哈哈以外,我已经尝试了一切。 – Gentil