Как обнаружить прокрутку в конце списка для N списков? - PullRequest
2 голосов
/ 02 декабря 2011

Я нашел этот подход с помощью slimcode , который создает это:

public static readonly DependencyProperty ListVerticalOffsetProperty = DependencyProperty.Register(
  "ListVerticalOffset",
  typeof( double ),
  typeof( SearchBusinessResultsPage ),
  new PropertyMetadata( new PropertyChangedCallback( OnListVerticalOffsetChanged ) ) );

public double ListVerticalOffset
{
  get { return ( double )this.GetValue( ListVerticalOffsetProperty ); }
  set { this.SetValue( ListVerticalOffsetProperty, value ); }
}

private static void OnListVerticalOffsetChanged( DependencyObject obj, DependencyPropertyChangedEventArgs e )
{
    // ...
}

Создает одно свойство readonly и один статический метод для его обработки.Но я хочу, чтобы N списков обрабатывали событие в конце прокрутки.

Я не знаю, как использовать этот код для обработки разных списков ...

Есть ли лучшеспособ сделать это?И как я могу использовать одно и то же для разных списков?

1 Ответ

0 голосов
/ 03 декабря 2011

Вы можете создать класс BusinessListBox, который наследуется от ListBox, и определить его стиль и шаблон, как в упомянутом примере.Затем вы можете расширить обработчики изменений DependencyProperty, чтобы иметь метод обработчика изменений экземпляра.

private static void OnListVerticalOffsetChanged(
    DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    var target = (BusinessListBox)d;
    double oldListVerticalOffset = (double)e.OldValue;
    double newListVerticalOffset = target.ListVerticalOffset;
    target.OnListVerticalOffsetChanged(oldListVerticalOffset, newListVerticalOffset);
}

private void OnListVerticalOffsetChanged(
    double oldListVerticalOffset, double newListVerticalOffset)
{
}

В идеале вы просто реализуете поведение Behavior или присоединенное, которое позволит вам делать то же самое в обычном ListBox.

...