检测枢轴中的滑动方向

时间:2014-04-04 11:18:06

标签: windows-phone-8 pivot

我在Windows Phone 8中工作,我在Pivot控件中有两个透视项。 如何检测我是向右还是向左滑动?

4 个答案:

答案 0 :(得分:6)

步骤1:在解决方案中添加Microsoft.Phone.Controls.Toolkit

步骤2:在xaml中添加Microsoft.Phone.Controls.Toolkit引用,如下所示:

xmlns:tolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

步骤3:创建手势监听器轻弹事件,如下所示:

<Grid x:Name="LayoutRoot" Background="Transparent">
        <tolkit:GestureService.GestureListener>
            <tolkit:GestureListener Flick="GestureListener_Flick"></tolkit:GestureListener>
        </tolkit:GestureService.GestureListener>
        <!--Pivot Control-->
        <controls:Pivot Title="MY APPLICATION">
            <!--Pivot item one-->
            <controls:PivotItem Header="item1">
                <Grid/>
            </controls:PivotItem>

            <!--Pivot item two-->
            <controls:PivotItem Header="item2">
                <Grid/>
            </controls:PivotItem>
        </controls:Pivot>
    </Grid>

步骤4:在您的cs页面中添加以下代码:

 private void GestureListener_Flick(object sender, FlickGestureEventArgs e)
        {
            if (e.Direction.ToString() == "Horizontal") //Left or right
            {
                if (e.HorizontalVelocity > 0) //Right
                {

                }
                else //Left
                {

                }
            }
        }

you could download toolkit from here

答案 1 :(得分:1)

对于简单的情况(如果您有更多2个透视项目),您可以使用您的Pivot的SelectionChanged事件 - 提供您将保存最后SelectedIndex的变量,并在更改后检查它是向右还是向左:

myPivot.SelectionChanged+=myPivot_SelectionChanged; // in your MainPage()

private int lastSelected = 0;

private void myPivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
   if ((lastSelected + 1 == myPivot.SelectedIndex) || 
       (myPivot.SelectedIndex == 0 && lastSelected == myPivot.Items.Count - 1))
   {
     // moved right
   }
   else 
   {  
     // moved left 
   }

   lastSelected = myPivot.SelectedIndex;
}

对于简单的情况,它应该有效,对于更复杂的情况,您可以使用TouchPanel或其他解决方案。

答案 2 :(得分:1)

而不是使用Items.Count,EventArgs参数e可以通过使用以下内容来确定数据透视项集合中的最后一个索引和所选索引:

        private void pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        // Casting e.AddedItems and e.RemovedItems to the PivotItem type to get 
        // the Selected Pivot and the Last Selected Pivot

        var selectedPivot = (PivotItem) e.AddedItems[0];
        var lastPivot = (PivotItem) e.RemovedItems[0];

        // Getting indices using the ItemCollection of the pivot

        int selectedIndex = pivot.Items.IndexOf(selectedPivot);
        int previousIndex = pivot.Items.IndexOf(lastPivot);

        if (selectedIndex < previousIndex)
        {
            // user swiped to the right
        }
        else
        {
            // user swiped to the left
        }

    }

即使你只有两个支点,这也可以帮到你。

答案 3 :(得分:0)

所有人都做得很好,但是当我们点击一​​个按钮向前导航并向后导航PivotItems时,我们会怎么做。

所以只需将以下代码放在两个按钮中,即前进和后退。 您可以通过设置Pivot.SelectedIndex

轻松实现此目的

前进

    if(pivotName.SelectedIndex < (pivotName.Items.Count - 1))
    pivotName.SelectedIndex++;
    else
    pivotName.SelectedIndex = 0;

用于落后

    if(pivotName.S electedIndex > 0)
    pivotName.SelectedIndex--;
    else
    pivotName.SelectedIndex = pivotName.Items.Count - 1;