如何在Windows 8 XAML应用程序中拖动元素?

时间:2012-09-28 04:18:00

标签: c# xaml windows-8

XAML / C#Windows 8 app ...

我在XAML / C#中使用了MouseDragElementBehavior来在屏幕上拖动元素。

不幸的是,在为Windows 8开发应用程序时,交互程序集并不起作用。

如何在Windows 8 XAML应用程序中拖动元素?

感谢。

编辑:我在这里找到了一个示例:http://code.msdn.microsoft.com/windowsapps/Input-3dff271b/sourcecode?fileId=44758&pathId=962809525

只需复制代码即可拖动我的元素。如果需要帮助,有些问题会更新。

2 个答案:

答案 0 :(得分:2)

您需要处理要拖动的元素上的操作事件。另外,在元素上将ManipulationMode设置为None以外的值。

  1. 处理ManipulationStarted初始化拖拽代码
  2. 处理ManipulationDelta,检查e.Delta值,并使用RenderTransform偏移元素,或者如果在Canvas中,请使用画布坐标。
  3. 希望有所帮助。

答案 1 :(得分: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);
    }