4

WinRT で UserControl を作成しましたが、指で動かせるようにしたいと考えています。
ペンまたはマウスを使用して移動すると、まだ移動しますが、指を使用すると移動しません。
指を使用すると PointerMoved がトリガーされません。

単純な 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, 0);
}

ここで何が恋しいですか?

編集:
私は Windows 8.1 と VisualStudio 2013 を使用しています。
これは新機能かもしれません^^

4

2 に答える 2

8

思ったより簡単です!

<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;
}

頑張ってください!

于 2013-07-25T08:12:09.443 に答える