我有一个项目列表,旁边有我的按钮。我想要这样的功能,当我点击按钮时,列表视图中的相应项目必须显示在列表的顶部。为此,我认为scrollintoview将起作用,但不幸的是它无法正常工作。 有什么建议吗?
....
lstview.SelectedItem = lstview.Items.GetItemAt(lstview.SelectedIndex);
lstview.ScrollIntoView(lstview.SelectedItem);
lstview.UpdateLayout();
.....
答案 0 :(得分:0)
ScrollIntoView方法只会将项目置于视图中(如果它不可见)。如果它已经可见,则调用该方法不会产生任何影响。在您的情况下,如果您能够单击该项目,显然该项目在视图中,并且无需滚动。来自MSDN的解释。
如果对象不可见,则会在视口的顶部或底部对齐。
如果您始终希望该项目成为视口中的第一项,则需要调整VerticalOffset。获取ListBox的Y值并将scrollviewer滚动到Y值。
listBoxScrollViewer.ScrollToVerticalOffset(100); // Measure the Y value of your listbox.
您可以从ListBox获取滚动查看器,例如this。