C# 如何在通用Windows平台(UWP)应用程序中通过鼠标单击移动文本框

C# 如何在通用Windows平台(UWP)应用程序中通过鼠标单击移动文本框,c#,animation,uwp,textbox,user-controls,C#,Animation,Uwp,Textbox,User Controls,我试图通过用鼠标单击并拖动或触摸并拖动windows Surface设备来移动画布子项的文本框。我尝试过使用TextBox.Manipulation数据,以及PointerPressed、PointerMoved和PointerReleased,但都没有成功。对于如何使用这两种方法中的任何一种移动文本框,是否有任何建议?或者,是否有使用不同方法的建议 谢谢,需要设置XAML操作模式 ManipulationMode="TranslateX, TranslateY" ManipulationDel

我试图通过用鼠标单击并拖动或触摸并拖动windows Surface设备来移动画布子项的
文本框。我尝试过使用TextBox.Manipulation数据,以及PointerPressed、PointerMoved和PointerReleased,但都没有成功。对于如何使用这两种方法中的任何一种移动文本框,是否有任何建议?或者,是否有使用不同方法的建议


谢谢,需要设置XAML操作模式

ManipulationMode="TranslateX, TranslateY"
ManipulationDelta="SomeControl_ManipulationDelta"
然后代码隐藏

private void SomeControl_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
    {
        var uiEle = sender as UIElement;
        var change = e.Delta.Translation;
        var left = Canvas.GetLeft(uiEle);
        var top = Canvas.GetTop(uiEle);
        left += change.X;
        top += change.Y;
        Canvas.SetLeft(uiEle, left);
        Canvas.SetTop(uiEle, top);
    }
以上示例来自vs2017,目标/分钟构建量为16299


提供的代码不阻止从屏幕上拖出,因此您可能希望为新的左值和顶值实现一个夹紧机制,或者其他一些方法来防止控件被放到不可见的空间中。

InkCanvas.SetLeft(myTextBox,someLeftValue);SetTop(myTextBox,someTopValue)是,但如何检测鼠标何时单击文本框以及将其移动到哪个位置?单击鼠标时,处理单击事件并从事件参数获取单击点的左坐标和上坐标。在线搜索wpf鼠标单击事件示例。UWP鼠标单击的处理方式与wpf不同。你知道在这两种情况下的处理方法吗?