Получить событие прокрутки для ScrollViewer на Windows Phone - PullRequest
5 голосов
/ 10 марта 2011

Вопрос: Получить событие прокрутки для ScrollViewer на Windows Phone

У меня есть прокрутка:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <ScrollViewer x:Name="MyScroller">
        <StackPanel>
            <!-- ... -->
        </StackPanel>
    </ScrollViewer>
</Grid>

Мне нужно событие, когда прокрутка происходит для MyScroller:

// MyScroller.Scroll += // <-- "Scroll" event does not exist on ScrollViewer
MyScroller.MouseWheel += MyScroller_MouseWheel; // Does not fire on scroll
MyScroller.ManipulationDelta += MyScroller_ManipulationDelta; // Fires for pinch-zoom only

Ответы [ 3 ]

12 голосов
/ 10 марта 2011

MouseMove срабатывает при прокрутке ScrollViewer:

public MainPage()
{
    InitializeComponent();

    MyScroller.MouseMove += MyScroller_MouseMove;
}

void MyScroller_MouseMove(object sender, MouseEventArgs e)
{
    throw new NotImplementedException();// This will fire
}

Это не интуитивно понятно, так как оно называется событием "мышь" и мышь отсутствует на телефоне.Тем не менее, точка касания перемещается относительно контейнера ScrollViewer, что позволяет обрабатывать прокрутку.

1 голос
/ 10 марта 2011

Это не так просто, но в этом вопросе написано несколько механизмов обнаружения прокрутки:

WP7 Auto Grow ListBox при достижении последнего элемента

По сути,Посмотрите, как вызывается и используется OnListVerticalOffsetChanged.

0 голосов
/ 17 февраля 2012

С Mango вы можете наблюдать за изменением визуального состояния «ScrollStates», как описано в этом примере проекта .

...