15

我有以下代码:

public MainPage()
{
    this.InitializeComponent();
    this.ManipulationStarting += MainPage_ManipulationStarting;
    this.ManipulationStarted += MainPage_ManipulationStarted;
    this.ManipulationInertiaStarting += MainPage_ManipulationInertiaStarting;
    this.ManipulationDelta += MainPage_ManipulationDelta;
    this.ManipulationCompleted += MainPage_ManipulationCompleted;
}
void MainPage_ManipulationStarting(object sender, ManipulationStartingRoutedEventArgs e)
{
    Debug.WriteLine("MainPage_ManipulationStarting");
}
void MainPage_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
{
    Debug.WriteLine("MainPage_ManipulationStarted");
}
void MainPage_ManipulationInertiaStarting(object sender, ManipulationInertiaStartingRoutedEventArgs e)
{
    Debug.WriteLine("MainPage_ManipulationInertiaStarting");
}
void MainPage_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
    Debug.WriteLine("MainPage_ManipulationDelta");
}
void MainPage_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
{
    Debug.WriteLine("MainPage_ManipulationCompleted");
}

但我不知道如何使用 Manipulation 事件。你能描述一下如何处理向上、向下、向左和向右滑动的手势吗?

4

3 回答 3

22

操作事件为您提供翻译值。操作 Delta 将持续触发,直到您的操作与惯性一起完成。在这种情况下,检查移动是否是惯性的(不应将正常移动视为滑动)并检测初始位置和当前位置之间的差异。

一旦达到阈值,触发向上/向下/向左/向右滑动事件。并立即停止操作以避免一次又一次地触发相同的事件。

以下代码将为您提供帮助,

    private Point initialpoint;

    private void Grid_ManipulationStarted_1(object sender, ManipulationStartedRoutedEventArgs e)
    {
        initialpoint = e.Position;
    }

    private void Grid_ManipulationDelta_1(object sender, ManipulationDeltaRoutedEventArgs e)
    {
        if (e.IsInertial)
        {
            Point currentpoint = e.Position;
            if (currentpoint.X - initialpoint.X >= 500)//500 is the threshold value, where you want to trigger the swipe right event
            {
                System.Diagnostics.Debug.WriteLine("Swipe Right");
                e.Complete();
            }
        }
    }
于 2012-09-30T15:21:16.363 回答
4

我尝试了 XAML 爱好者的答案,但对我来说并不是那么准确(IsIntertial 对我来说总是错误的)。我为任何想要尝试不同事物的人实现了一些不同的东西(我回复了相关主题的前一篇文章,这里是在 Windows 8 Grid 中处理滑动访客)。

于 2012-11-15T18:03:27.253 回答
2

看看GestureRecognizer .CrossSliding 事件。还有EdgeGesture类和示例:EdgeGesture 示例手势示例

于 2012-12-10T18:13:37.500 回答