我目前有一个列表框设置如下:
.xaml:
.xaml.cs:
在窗口构造函数中:
我有一个按钮,它可以做以下的事情:
.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存在错误?