Как я могу узнать, в каком направлении пользователь скользит по Панораме?(Телефон с операционной системой Виндоус) - PullRequest
0 голосов
/ 14 марта 2012

У меня есть страница панорамы.Как узнать, в какую сторону пользователь скользит по Панораме?Мне нужно знать направление скольжения

 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 Ответ

3 голосов
/ 14 марта 2012

Что я сделаю, так это получу координату касания в 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; }
...