加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows-8 – 如何在WinRT中创建一个tap可移动控件?

发布时间:2020-12-14 02:05:14 所属栏目:Windows 来源:网络整理
导读:我在WinRT中写了一个UserControl,我想用手指移动它. 当我使用钢笔或鼠标移动它时,它仍然在移动,但是当我用手指时它不会移动. 当我用手指时,PointerMoved不是triggert. 这是简单的xaml: UserControl Rectangle PointerPressed="PointerPressed" PointerMoved
我在WinRT中写了一个UserControl,我想用手指移动它.
当我使用钢笔或鼠标移动它时,它仍然在移动,但是当我用手指时它不会移动.
当我用手指时,PointerMoved不是triggert.

这是简单的xaml:

<UserControl>
    <Rectangle PointerPressed="PointerPressed" PointerMoved="PointerMoved"/>
</UserControl>

这是代码:

private Point position;

void PointerPressed(object sender,Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
{
    Rectangle r = sender as Rectangle;
    var pointerPoint = e.GetCurrentPoint(r);
    position = pointerPoint.Position;
}

void PointerMoved(object sender,Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
{    
    Rectangle r = sender as Rectangle;   
    var delta = e.GetCurrentPoint(r).Position;
    r.Margin = new Thickness(r.Margin.Left + delta.X - position.X,r.Margin.Top + delta.Y - position.Y,0);
}

我在这里想念什么?

编辑:
我正在使用Windows 8.1和VisualStudio 2013.
也许这是一个新功能^^

解决方法

它比你想象的简单!

<Rectangle Width="100" Height="100" Fill="White"
    ManipulationMode="TranslateX,TranslateY" 
    ManipulationDelta="Rectangle_ManipulationDelta_1" />

private void Rectangle_ManipulationDelta_1(object sender,ManipulationDeltaRoutedEventArgs e)
{
    var _Rectangle = sender as Windows.UI.Xaml.Shapes.Rectangle;
    var _Transform = (_Rectangle.RenderTransform as CompositeTransform)
        ?? (_Rectangle.RenderTransform = new CompositeTransform()) as CompositeTransform;
    _Transform.TranslateX += e.Delta.Translation.X;
    _Transform.TranslateY += e.Delta.Translation.Y;
}

祝你好运!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读