我创建了一个可移动的UserControl
<UserControl x:Class="Restaurant.Views.Managerer.TablePanel" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:Restaurant.Helpers.Converter" mc:Ignorable="d" x:Name="root" MouseLeftButtonDown="root_MouseLeftButtonDown" MouseLeftButtonUp="root_MouseLeftButtonUp" MouseMove="root_MouseMove" DataContext="{Binding RelativeSource={RelativeSource Self}}"> ....
码
Point anchorPoint; Point currentPoint; bool isInDrag = false; private void root_MouseLeftButtonDown(object sender,MouseButtonEventArgs e) { var element = sender as FrameworkElement; anchorPoint = e.GetPosition(null); element.CaptureMouse(); isInDrag = true; e.Handled = true; } private void root_MouseMove(object sender,MouseEventArgs e) { if (isInDrag) { var element = sender as FrameworkElement; currentPoint = e.GetPosition(null); var transform = new TranslateTransform { X = (currentPoint.X - anchorPoint.X),Y = (currentPoint.Y - anchorPoint.Y) }; this.RenderTransform = transform; anchorPoint = currentPoint; } } private void root_MouseLeftButtonUp(object sender,MouseButtonEventArgs e) { if (isInDrag) { var element = sender as FrameworkElement; element.ReleaseMouseCapture(); isInDrag = false; e.Handled = true; } }
如果我改变了代码
X = (currentPoint.X - anchorPoint.X),Y = (currentPoint.Y - anchorPoint.Y)
至
X = (currentPoint.X),Y = (currentPoint.Y)
我可以移动UserControl,但鼠标和UserControl不匹配
解决方法
早上好.我睡了,可以想)))
private TranslateTransform transform = new TranslateTransform(); private void root_MouseMove(object sender,MouseEventArgs e) { if (isInDrag) { var element = sender as FrameworkElement; currentPoint = e.GetPosition(null); transform.X += currentPoint.X - anchorPoint.X; transform.Y += (currentPoint.Y - anchorPoint.Y); this.RenderTransform = transform; anchorPoint = currentPoint; } }