更改ListBox样式而不转到顶部

本文关键字:顶部 ListBox 样式 更改 | 更新日期: 2023-09-27 18:21:32

我有一个绑定到ListBox源的ObservableCollection。ListBox使用Style在ListBox的末尾显示一个按钮,以"加载更多"内容。加载最后一个内容时,我更改ListBox的样式,使其显示"No more posts"。

问题是,当更改样式时,ListBox会移到顶部(第一项)。。有什么办法可以防止这种情况发生吗?

// iterate over items
foreach (Record rec in root.data.records)
{
    // add items to observablecollection
}
// check if there are more items
if (root.data.nextPage == 0)
{
    // there are no more items => set style with "no more posts"
    Dispatcher.BeginInvoke(() => listbox.Style = (Style)App.Current.Resources["listboxend"]);
    return;
}
else
{
    // there are still more items => set style with button
    Dispatcher.BeginInvoke(() => listbox.Style = (Style)this.Resources["listboxwithbutton"]);
}

奇怪的是:一开始列表框没有样式。当我设置"带按钮的列表框"样式时,列表框不会转到顶部。。。仅当设置"listboxend"样式时。

更改ListBox样式而不转到顶部

无论何时更改样式,都可以使用ListBox.ScrollIntoView(listBoxItem)滚动到listBoxItem。假设现在你知道如何获得这个。祝你好运