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

时间:2017-12-14 02:54:08

标签: c# animation uwp textbox user-controls

我正在尝试通过在鼠标Surface设备上单击并拖动鼠标或触摸并拖动来移动画布的子项textbox。我尝试过使用TextBox.Manipulation数据,以及PointerPressed,PointerMoved和PointerReleased,但这些都没有被证明是成功的。有没有关于如何使用这些方法移动文本框的建议?或者,有没有使用不同方法的建议?

由于

1 个答案:

答案 0 :(得分:1)

需要设置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,目标/分钟为build 16299。

提供的代码不会阻止拖出屏幕,因此您可能希望为新的左侧和顶部值实施钳位机制,或者使用其他方法防止控件在非可见空间中掉落。