У меня есть общедоступное свойство типа ObservableCollection<ClassName>
в коде позади файла, и я привязал его к свойству ItemsSource поля со списком.
<ComboBox Height="23"
Margin="82,34,71,0"
Name="comboBox1"
VerticalAlignment="Top"
ItemsSource="{Binding Path=Collection}"
DisplayMemberPath="Name" />
После того, как я заполнил эту коллекцию при загрузке формы, отображаются все элементы, и я прокручиваю вниз до последнего элемента и выбираю его.
Теперь я нажимаю кнопку, которая добавит еще один элемент в коллекцию, и я хочу установить курсор в начало списка. Для этого я попробовал следующий код,
private void button1_Click(object sender, RoutedEventArgs e)
{
Collection.Add(new TempObject() { Name = "new item" });
comboBox1.SelectedIndex = -1;
}
При этом полоса прокрутки не устанавливается в начало списка. Я попытался очистить список и заполнить его снова, но это все равно не сработало.
Помогите, пожалуйста....
После применения BringIntoView:
private void button1_Click(object sender, RoutedEventArgs e)
{
Collection.Clear();
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
comboBox1.SelectedIndex = -1;
ComboBoxItem item = comboBox1.ItemContainerGenerator.ContainerFromIndex(0)
as ComboBoxItem;
if (item != null) item.BringIntoView();
}
Это всегда будет возвращать значение null для элемента ComboBoxItem.