4

XAML/C# Windows 8 アプリ...

画面上で要素をドラッグするために、XAML/C# で MouseDragElementBehavior を使用しました。

残念ながら、Windows 8 用のアプリを開発している間は、インタラクション アセンブリが機能しません。

Windows 8 XAML アプリで要素をドラッグするにはどうすればよいですか?

ありがとう。

編集:ここでサンプルの例を見つけました: http://code.msdn.microsoft.com/windowsapps/Input-3dff271b/sourcecode?fileId=44758&pathId=962809525

コードをコピーするだけで、要素をドラッグできます。ヘルプが必要な場合は、いくつかの問題があると更新されます。

4

2 に答える 2

2

ドラッグする要素の操作イベントを処理する必要があります。また、要素の ManipulationMode を None 以外の値に設定します。

  1. ManipulationStartedドラッグ コードを初期化するためのハンドル
  2. を処理ManipulationDeltaし、e.Delta値を調べて、 を使用して要素をオフセットするRenderTransformか、 の場合Canvasはキャンバス座標を使用します。

それが役立つことを願っています。

于 2012-09-28T07:51:22.753 に答える
1

これは、ColinEの回答に基づいた非常に単純化された例です。

楕円を持つ Canvas を考えてみましょう:

<Canvas Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <Ellipse Fill="Red" 
             Canvas.Left="100"
             Canvas.Top="100"
             Width="100" 
             Height="100" 
             ManipulationMode="All" 
             ManipulationDelta="Ellipse_ManipulationDelta_1"/>
</Canvas>

コード ビハインドでは、ManipulationDelta を処理します。

private void Ellipse_ManipulationDelta_1(object sender, ManipulationDeltaRoutedEventArgs e)
    {
        Ellipse myEllipse = (Ellipse)sender;
        Canvas.SetLeft(myEllipse, Canvas.GetLeft(myEllipse) + e.Delta.Translation.X);
        Canvas.SetTop(myEllipse, Canvas.GetTop(myEllipse) + e.Delta.Translation.Y);
    }
于 2013-01-09T04:51:44.370 に答える