我在Windows Phone 8中工作,並且在樞軸控件中有兩個數據透視項。 如何檢測我是否向右或向左滑動?檢測樞軸中的滑動方向
回答
第一步:添加Microsoft.Phone.Controls.Toolkit在解決方案
第二步:在XAML中添加Microsoft.Phone.Controls.Toolkit參考這樣的:
xmlns:tolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
第三步:創建手勢監聽輕彈事件是這樣的:
<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
{
}
}
}
此代碼適用於我,我已經在我的解決方案中使用,如果您發現任何問題,請告訴我 –
謝謝great expalanation – AnotherGeek
對於簡單的情況下(如果你有超過2個樞紐項目),可以使用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
或其他解決方案。
我認爲您的代碼不適用於我的示例,因爲我使用了兩個當我向右或向左移動時,lastSelected和selectedIndex將具有相同的值 – AnotherGeek
如果我向左移動SelectedIndex也是(1)(因爲我只有2個項目),所以我不會區分方向。但如果有三個或更多項目,這是一個很好的解決方案。我認爲我必須在這種情況下使用工具包。謝謝你的幫助 – AnotherGeek
@ user3471718我必須說你是對的 - 只有兩個項目,只根據他們的數字來判斷運動是正確的還是左的。 – Romasz
除了使用Items.Count
的,你可以paramater e
EventArgs的確定樞紐項目集合中的最後一個索引,並通過使用下列選定的指標:
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
}
}
這會幫助你,即使你有隻有兩個支點。
不錯,所有的工作,但我們會做什麼,當我們點擊一個按鈕向前導航和背面的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;
- 1. 動畫完成時樞軸檢測
- 2. 使用SwipeView檢測滑動方向
- 3. 如何檢測滑動方向android fragmentactivity
- 4. VBA樞軸檢查
- 5. 如何檢測Libgdx中的滑動方向?
- 6. Iphone:檢測從按鈕開始的拖動/滑動方向
- 7. 禁用UWP中樞軸的左右滑動功能
- 8. 樞軸動態列
- 9. 單向樞軸分頁
- 10. 檢測UICollectionView中的滑動
- 11. 檢測y軸上加速度計移動的方向
- 12. varchar列的動態樞軸
- 13. 樞軸滑動動畫後顯示彈出
- 14. 用於檢測滑動方向的邏輯
- 15. 如何檢測滑動手勢的方向?
- 16. 從WP7的一側停止滑動樞軸
- 17. 檢測在UINavigationBar中滑動
- 18. 樞軸
- 19. 如何檢測滑動方向,觸摸位置等?
- 20. SQL查詢中樞軸列中的樞軸
- 21. 是在動態樞軸
- 22. 擺與運動樞軸
- 23. T-SQL動態樞軸
- 24. 動態樞軸多個列
- 25. LINQ樞軸與動態列
- 26. XSLT樞軸動態列
- 27. 如何在ListBox爲空時滑動樞軸點
- 28. AppDelegate中的方向檢測
- 29. 檢測向左滑動的單元格中的tableView
- 30. JSlider滑動方向
檢查[本SO後(http://stackoverflow.com/a/實現這一目標20297442/2982225)和[這篇文章](http://stackoverflow.com/a/18529734/2982225) –
我已經從問題的標題中刪除了一個標籤 - 請注意比大多數情況下的問題[不應該在他們的標籤中包含標籤標題。](http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in -their-titles) – Romasz