为什么listview scrolliintoview不起作用?

时间:2014-08-01 06:09:24

标签: .net wpf listview c#-4.0

我有一个项目列表,旁边有我的按钮。我想要这样的功能,当我点击按钮时,列表视图中的相应项目必须显示在列表的顶部。为此,我认为scrollintoview将起作用,但不幸的是它无法正常工作。 有什么建议吗?

  ....
  lstview.SelectedItem = lstview.Items.GetItemAt(lstview.SelectedIndex);
  lstview.ScrollIntoView(lstview.SelectedItem);
  lstview.UpdateLayout();
  .....

1 个答案:

答案 0 :(得分:0)

ScrollIntoView方法只会将项目置于视图中(如果它不可见)。如果它已经可见,则调用该方法不会产生任何影响。在您的情况下,如果您能够单击该项目,显然该项目在视图中,并且无需滚动。来自MSDN的解释。

  

如果对象不可见,则会在视口的顶部或底部对齐。

如果您始终希望该项目成为视口中的第一项,则需要调整VerticalOffset。获取ListBox的Y值并将scrollviewer滚动到Y值。

listBoxScrollViewer.ScrollToVerticalOffset(100); // Measure the Y value of your listbox.

您可以从ListBox获取滚动查看器,例如this