我正在尝试通过在鼠标Surface设备上单击并拖动鼠标或触摸并拖动来移动画布的子项textbox
。我尝试过使用TextBox.Manipulation数据,以及PointerPressed,PointerMoved和PointerReleased,但这些都没有被证明是成功的。有没有关于如何使用这些方法移动文本框的建议?或者,有没有使用不同方法的建议?
由于
答案 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。
提供的代码不会阻止拖出屏幕,因此您可能希望为新的左侧和顶部值实施钳位机制,或者使用其他方法防止控件在非可见空间中掉落。