2011-12-21 2 views
0

Я просто хочу использовать ListBox и прокрутить до последней строки. Это не проблема, пока отображается Listbox. Но список находится на TabPage, и когда я использую другой файл PageIndex и возвращаюсь в свой список ListBox, старый элемент все еще выбран и прокручивается вместо последнего элемента и представления последнего элемента.ScrollintoView on Hided Listbox не работает

Dim st As New StackPanel 
'''some code for stackpanel 
Me.List1.Items.Add(st) 
Me.List1.ScrollIntoView(st) 

Любые идеи?

ответ

1

Я предполагаю, что вы используете TabControl, который располагает TabItems, когда они не видны. Это означает, что элементы повторно создаются при переключении вкладок, поэтому, если значения не привязаны к чему-то в DataContext, они теряют свои значения и возвращаются к умолчанию.

Простым решением было бы связать SelectedItem с чем-то в DataContext и быть уверенным, что новые элементы будут установлены как SelectedItem, когда они будут добавлены.

Альтернативным решением было бы extend the TabControl to stop it from destorying it's children при переключении вкладок

+0

Привет Рахиль. При изменении TabIndex TabControl не восстанавливает и не удаляет элементы управления. Повторите проверку. Я не восстанавливаю и не создаю элементы управления. Просто переключите Tab. При переходе с TAB1 на TAB3 я меняю выбор ListBox на TAB3. Затем я пошел в TAB1, и я создал новый ListEntries для (скрытого) TAB3 в codebehind. Я возвращаюсь к TAB3. Создаются новые элементы. Но команда 'ScrollIntoView' не работала. – Nasenbaer

+0

@Nasenbaer Если шаблон для TabItems тот же, WPF будет перерабатывать отображаемый элемент, а не восстанавливать его. Также, если элемент не отображается (например, ListBox на Tab3 при просмотре Tab1), он не существует в визуальном дереве и не может отвечать на команды типа «ScrollIntoView». Вам нужно либо запустить «ScrollIntoView» в событии «Loaded», если TabItems будут воссозданы, либо в событии «DataContextChanged», если элементы управления TabItem повторно используются. – Rachel

+0

Спасибо Рейчел. Я не смог проверить его, потому что на моей Grid событие загрузки не вызывается с страницы. Это немного особенное. Спасибо за интересный ответ, я этого раньше не знал. – Nasenbaer

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