В настоящее время у меня есть список, настроенный следующим образом:
.xaml:
<ListBox Name="DetailsList" ItemsSource="{Binding}" LayoutUpdated="DetailsList_LayoutUpdated" />
.xaml.cs:
private ObservableCollection<string> details = new ObservableCollection<string>();
В конструкторе окна:
DetailsList.DataContext = details;
У меня была кнопка, которая делала следующее:
details.Add(System.DateTime.Now.ToString("HH:mm:ss ") + someString);
DetailsList.UpdateLayout();
var lastItem = DetailsList.Items[DetailsList.Items.Count - 1];
DetailsList.SelectedItem = lastItem;
DetailsList.ScrollIntoView(lastItem);
Что должен выбрать последний элемент в списке и перейти к нему, но он делает это только в 75% случаев. Вместо этого он часто выбирает вторую последнюю и прокручивает до нее.
Я попытался переместить прокрутку и выделение в обработчик событий LayoutUpdated, без изменений.
Я попробовал две отдельные кнопки - одну для добавления, одну для выбора и прокрутки. Если я добавляю по одному элементу за раз, тогда прокрутка кажется немного более надежной - она работает 90% времени. Если я добавлю полдюжины элементов перед прокруткой, это почти никогда не будет работать. Обычно он выбирает один из новых предметов, но не последний.
Я что-то не так делаю или есть ошибка в System.Windows.Controls.ListBox?