Вопрос

Мне нужен список со списком функций 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 , должно помочь вам.

Еще одно сообщение с сайта Саши Барбера:

http://sachabarber.net/?p=481

Джеремия Моррилл делится кодом, который реализует анимированную прокрутку с инерцией в пользовательском 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);
  }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top