IPhone, как прокрутка на Silverlight ListBox
-
03-07-2019 - |
Вопрос
Мне нужен список со списком функций iPhone для Silverlight. То есть, анимированная прокрутка, и перетащите, чтобы прокрутить. Прокрутка будет продолжаться через некоторое время после события «вверх», в зависимости от «скорости». перетаскивания. Я искал и не нашел поставщиков управления, обеспечивающих это. Итак, вопрос в том, как мне это построить? Мне нужно несколько советов, чтобы начать.
Этот вопрос состоит из двух частей:
Часть 1. Как получить анимированную прокрутку списка.
Часть 2. Как создать " перетаскиваемый " прокручивая, я полагаю, я должен поставить холст сверху и отследить событие мыши, и имитировать некоторую физику. Некоторые намеки здесь были бы отличными.
Спасибо Ларси.
Решение
Некоторое время назад я сделал элемент управления, который сделал что-то вроде этого. Все, что я сделал, это поместил стековую панель внутрь холста. Просто отрегулируйте canvas.top всей стековой панели при перемещении мыши (пока нажата мышь). Чтобы анимировать прокрутку после наведения мыши, вам просто нужно отследить перемещенную сумму и применить анимацию к свойству canvas.top.
Другие советы
Вот действительно хороший полный пример для WPF, который выполняет как перетаскивание, так и автоматическую прокрутку с прокруткой / инерцией. Я не уверен, что если что-то нужно будет изменить, чтобы оно работало в Silverlight.
http: //sachabarbs.wordpress.com/2009/12/24/friction-scrolling-now-an-wpf-attached-behaviour-too/ р>
Просто отметьте, что вы не можете щелкнуть и перетащить вид, если щелкнете по дочернему элементу (например, кнопкам), который фиксирует ввод мыши. Я на самом деле закончил тем, что изменил этот пример, чтобы вы могли перетаскивать прокрутку, когда нажимаете на дочерние элементы, и в то же время позволяли дочерним элементам принимать ввод с помощью мыши, когда прокрутка без перетаскивания.
Это будет проще в Silverlight 3, чем Silverlight 2, но не невозможно в 2.
Это видео из MIX 09, Создание элементов управления Microsoft Silverlight , должно помочь вам. р>
Еще одно сообщение с сайта Саши Барбера:
Джеремия Моррилл делится кодом, который реализует анимированную прокрутку с инерцией в пользовательском ContentControl (на основе шаблона с включенным ScrollViewer)
<ScrollViewer x:Name="sv1" Width="500" Height="285">
<StackPanel x:Name="sp1" Width="450" Height="285">
</StackPanel>
</ScrollViewer>
Установив поз. и нег. поля на панели стека внутри прокрутки Вы можете создать эффект прокрутки. Р>
onScroll_Up()
{
//Change this based on your scrollviewer dimension
if (this.sv1.ScrollableHeight < 300)
{
Thickness thickness = this.sp1.Margin;
thickness.Top += 50;
this.sv1.SetValue(StackPanel.MarginProperty, thickness);
}
}
onScroll_Down()
{
if (this.sv1.ScrollableHeight > 1)
{
Thickness thickness = this.sp1.Margin;
thickness.Top += -50;
this.sv1.SetValue(StackPanel.MarginProperty, thickness);
}
}