2012-01-31 3 views
2

Можно установить смещение для ListBox? Все, что я могу найти, это прокрутка к элементу, но мне нужно прокрутить ListBox в любую позицию.Смещение ListBox в WP7

В качестве альтернативы, есть какой-либо другой компонент, который может сделать виртуализацию своих элементов и что я могу контролировать смещение?

ответ

5

Вы можете получить ScrollViewer в ListBox и использовать его ScrollToVerticalOffset-method. Чтобы получить ScrollViewer, вы можете, например, подключить к ListBox нагружал-события, как следующее:

XAML:

<ListBox Loaded="HookScrollViewer"> 

code- за:

private void HookScrollViewer(object sender, RoutedEventArgs e) 
    { 
     var element = (FrameworkElement)sender; 
     var scrollViewer = ControlHelpers.FindChildOfType<ScrollViewer>(element); 

     if (scrollViewer == null) 
      return; 

     this.myScrollViewer = scrollViewer; 
    } 

ControlHerlpers.FindChildOfType-метод реализации так:

public static T FindChildOfType<T>(DependencyObject root) where T : class 
    { 
     var queue = new Queue<DependencyObject>(); 
     queue.Enqueue(root); 

     while (queue.Count > 0) 
     { 
      var current = queue.Dequeue(); 
      for (int i = VisualTreeHelper.GetChildrenCount(current) - 1; 0 <= i; i--) 
      { 
       var child = VisualTreeHelper.GetChild(current, i); 
       var typedChild = child as T; 
       if (typedChild != null) 
       { 
        return typedChild; 
       } 
       queue.Enqueue(child); 
      } 
     } 
     return null; 
    } 

Теперь у вас есть ScrollViewer ListBox в члене myScrollViewer, и вы можете напрямую обращаться к его методам. Например, для прокрутки дна можно назвать:

this.myScrollViewer.ScrollToVerticalOffset(double.MaxValue); 
+0

Он отлично работает, если я не установить много времени смещение ... –

+0

привет Майкл может вы возможно мне помочь? У меня есть 2 списка на одной странице, и данные смешиваются, как я могу получить второй список с использованием вышеуказанного кода? – Bohrend

+0

он работает превосходно ..... – URAndroid

Смежные вопросы