如何找出用户滑动Panorama的方向? (Windows Phone)

时间:2012-03-14 10:04:52

标签: c# silverlight windows-phone-7 silverlight-4.0 silverlight-3.0

我有一个全景页面。如何找出哪一方用户滑动全景?我需要知道滑动的方向

 void DialogPanorama_ManipulationStarted(object sender, ManipulationStartedEventArgs e)
        {
            int selectedIndex = this.DialogPanorama.SelectedIndex;
            int count = this.DialogPanorama.Items.Count;
            for (int i = 0; i < count; ++i)
            {
                {
                    FeedItemViewModel curItem = this.DialogPanorama.Items[i] as FeedItemViewModel;
                    if (curItem != null)
                    {
                        if (Math.Abs(i - selectedIndex) > 1 && Math.Abs(Math.Abs(i - selectedIndex) - count) > 1)
                        {
                            curItem.ItemVisibility = System.Windows.Visibility.Collapsed;
                        }
                        else
                        {
                            curItem.ItemVisibility = System.Windows.Visibility.Visible;
                        }
                    }
                }
            }
        }

更新

我认为应该用这个来完成:

 Point startPoint = e.ManipulationOrigin;
            MouseState ms = Mouse.GetState();

1 个答案:

答案 0 :(得分:3)

我要做的是在2个不同时刻(短)获得触摸的坐标。 如果坐标B的横坐标高于坐标A的横坐标,则用户想要向左滑动。 如果坐标B的横坐标最低于坐标A的横坐标,则用户想要向右滑动。

看看这里(获得触摸位置):

http://msdn.microsoft.com/en-us/library/bb197572.aspx


编辑其他方式:

简化推断幻灯片方向的方法:

    private void Panorama_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        OldPage = ActualPage;
        ActualPage = panorama.SelectedIndex;
        MessageBox.Show("Old page: " + OldPage + "\n Actual Page: " + ActualPage);
        if (OldPage < ActualPage)
            MessageBox.Show("Direction of the slide: Right");
        else if (OldPage > ActualPage)
            MessageBox.Show("Direction of the slide: Left");
        // else if( some other specific condition...)

    }



    private int OldPage { get; set; }
    private int ActualPage { get; set; }