Запуск события после прокрутки

55
6

Я новичок в разработке приложений для Windows Phone, и я создал прокручивающееся меню, используя следующий код xaml:

    <ScrollViewer  HorizontalAlignment="Left" Margin="18,0,0,0" Name="scrollViewer1" VerticalAlignment="Top" Width="450" HorizontalScrollBarVisibility="Auto" Grid.Row="1">
<StackPanel Height="Auto" Name="stackPanel1" Width="Auto">
<Button Height="620" FontSize="120" Name="gotoGmail" Width="Auto">Gmail</Button>
<Button Height="620" FontSize="120" Name="gotoYahoo" Width="Auto">Yahoo</Button>
</StackPanel>
</ScrollViewer>

Я хотел бы узнать, можно ли запустить событие, когда пользователь прокручивает меню с одной кнопки на другую. Если это возможно, я был бы признателен, если бы вы могли объяснить, как это сделать. Если это не так, я хотел бы услышать, как я могу это сделать, используя разные инструменты, а не ScrollViewer. Заранее спасибо !

спросил(а) 2013-12-30T00:08:00+04:00 6 лет, 6 месяцев назад
1
Решение
100

В ScrollViewer нет события "Прокрутка", но то, что вы можете сделать, это двухстороннее связывать свойство VerticalOffset. Это позволяет вам запускать событие/команду из вашего режима view/viewmodel при изменении прокрутки.

Что-то вроде этого:

<ScrollViewer VerticalOffset="{Binding VerticalOffset,Mode=TwoWay}" ...

А затем в контексте данных:

public double VerticalOffset
{
get { return _verticalOffset; }
set
{
_verticalOffset = value;
// call "on scroll changed" actions here
}
}
private double _verticalOffset = 0;

как я мог это сделать, используя разные инструменты, а не ScrollViewer

Вы можете, конечно, создать меню прокрутки, используя другие подходы. Я готов поспорить, что есть какой-то отличный подход, который вы могли бы понять, используя переходы/анимации WinRT, но я недостаточно знаком с теми, кто говорит. Вот некоторые другие (не уверен, что было бы лучше/проще для вашего сценария):

    Вероятно, использование Canvas было бы быстрым и грязным способом сделать это (просто настройте кнопки, которые устанавливают анимацию Canvas.Left и Canvas.Top). Расширение ItemsControl вместе с пользовательской ControlTemplate было бы хорошим подходом, если вы хотите создать повторно используемый компонент. Мне нравится расширять Panel, но вам нужно делать анимацию вручную с помощью DispatcherTimer, и вам нужно самостоятельно выложить кнопки, используя Measure и Arrange.

ответил(а) 2013-12-30T01:32:00+04:00 6 лет, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема