Хобрук: Ваш путь к мастерству в программировании

Автоматическая прокрутка в списке Silverlight

Как я могу программно заставить окно списка silverlight прокручиваться вниз, чтобы всегда был виден последний добавленный элемент.

Я пробовал просто выбрать товар. Он становится выбранным, но по-прежнему не отображается, если вы вручную не прокрутите до него.

29.05.2009

  • +1 за указание на то, как Silverlight упустил самую базовую функцию ListBox, которую я могу себе представить. У WinForms это было навсегда! Жаль, что вы на самом деле не являетесь участником в данный момент :) 27.09.2011

Ответы:


1

Используйте метод ScrollIntoView ListBox, передав последний элемент. Возможно, вам придется вызвать UpdateLayout непосредственно перед тем, как он заработает.

30.05.2009
  • Это именно тот ответ, который я искал, кроме ... Я не могу заставить его работать. Похоже, это должно сработать ... Если lst.Items.Count ›0 Тогда lst.SelectedIndex = lst.Items.Count - 1 lst.ScrollIntoView (lst.SelectedItem) lst.UpdateLayout () Else Выбран последний элемент, но не с учетом. 01.06.2009
  • Вызовите UpdateLayout ПЕРЕД ScrollIntoView, надеюсь, это сработает для вас. 03.06.2009
  • Это помогло. Работает именно так, как я хотел сейчас. Спасибо. 03.06.2009

  • 2

    Метод ScrollIntoView () прокручивает последний элемент в поле зрения, однако listBox.UpdateLayout () должен вызываться непосредственно перед ScrollIntoView (). Вот полный метод с кодом:

        // note that I am programming Silverlight on Windows Phone 7
    
        public void AddItemAndScrollToBottom(string message)
        {
            string timestamp = DateTime.Now.ToString("mm:ss");
            var item = new ListBoxItem();
            item.Content = string.Format("{0} {1}", timestamp, message);
            // note that when I added a string directly to the listbox, and tried to call ScrollIntoView() it did not work, but when I add the string to a ListBoxItem first, that worked great
            listBoxEvents.Items.Add(item);
    
            if (listBoxEvents.Items.Count > 0)
            {
                listBoxEvents.UpdateLayout();
                var itemLast = (ListBoxItem)listBoxEvents.Items[listBoxEvents.Items.Count - 1];
                listBoxEvents.UpdateLayout();
                listBoxEvents.ScrollIntoView(itemLast);
            }
        }
    
    21.11.2010

    3

    Немного переработан, чтобы уменьшить количество строк кода:

     listBoxEvents.Add(item)
     listBoxEvents.UpdateLayout()
     listBoxEvents.ScrollIntoView(listBoxEvents.Items(listBoxEvents.Items.Count - 1))
    
    08.06.2011

    4

    Просто прошел через это, и ни одно из вышеперечисленных решений не сработало в приложении Silverlight 5. Решение оказалось таким:

     public void ScrollSelectedItemIntoView(object item)
     {
          if (item != null)
          {                
              FrameworkElement frameworkElement = listbox.ItemContainerGenerator.ContainerFromItem(item) as FrameworkElement;
              if (frameworkElement != null)
              {
                  var scrollHost = listbox.GetScrollHost();                    
                  scrollHost.ScrollIntoView(frameworkElement);
              }
          }                
     }
    
    17.10.2012
    Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..