我在Windows Phone 8中工作,我在Pivot控件中有两个透视项。 如何检测我是向右还是向左滑动?
答案 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
{
}
}
}
答案 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;