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. 使用 a处理ManipulationDelta、检查e.Delta值和偏移元素RenderTransform,或者如果在 a 中Canvas,则使用画布坐标。

希望有帮助。

于 2012-09-28T07:51:22.753 回答
1

这是一个基于 ColinE 回答的过于简化的示例。

考虑一个有椭圆的画布:

<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 回答