【问题标题】:DataGrid ScrollIntoView - how to scroll to the first row that is not shown?DataGrid ScrollIntoView - 如何滚动到未显示的第一行?
【发布时间】:2012-03-28 21:02:10
【问题描述】:

我正在尝试向下滚动带有代码的 WPF DataGrid。 我用

int itemNum=0;
private void Down_Click(object sender, RoutedEventArgs e)
{
    if (itemNum + 1 > dataGridView.Items.Count - 1) return;
    itemNum += 1;
    dataGridView.UpdateLayout();
    dataGridView.ScrollIntoView(dataGridView.Items[itemNum]);
}

仅当 itemNum 行当前未显示时才会向下滚动。

例如,如果 DataGrid 的长度足以容纳 10 行,而我有 20 行,我需要调用此函数 11 次(直到 itemNum 为 11)才能滚动到下一行。

如果行已经适合网格,它不会向下滚动(即使它在屏幕上的最后一个)。

我想实现这一点,当我调用这个方法时,网格会将下一行带到网格的顶部(就像滚动条一样)。 为什么它不起作用?

【问题讨论】:

    标签: c# wpf datagrid scroll


    【解决方案1】:

    使用 DataGridView.FirstDisplayedScrollingRowIndex。

     int itemNum=0;
        private void Down_Click(object sender, RoutedEventArgs e)
        {
            itemNum++;
            if (itemNum > dataGridView.Items.Count - 1) return;
            //dataGridView.UpdateLayout();  <-- I don't think you need this
            dataGridView.FirstDisplayedScrollingRowIndex = itemNum;
        }
    

    抱歉没有意识到 WPF 网格没有那个。关于滚动的观点仍然有效。

    ScrollIntoView 只会在项目不在视图中时滚动,如果它低于当前可见行,则将其设为最后一行,因此当您滚动查看第 11 个项目时,它看起来就像滚动到第二个项目。

    这个变通方法应该适合你。您滚动到最底部的行,然后向上滚动到您需要的任何行。注意,这里你实际上需要更新布局,否则它会在再次向上滚动之前忽略第一次滚动的结果。

            dataGridView.ScrollIntoView(DataGrid1.Items[DataGrid1.Items.Count - 1]);
            dataGridView.UpdateLayout();
            dataGridView.ScrollIntoView(DataGrid1.Items[itemIndex]);
    

    【讨论】:

    • 对不起,这是 WPF 中的 DataGrid,一些粗鲁的人删除了我主题的 WPF 部分,可能只是为了获得积分。您的建议适用于 WINDOWS FORM DataGridView
    • 正是我需要的并且完全有意义...如果当前选择的项目是最后一个,则必须向上滚动,直到该特定记录最终可见。谢谢
    【解决方案2】:

    Check this out,它适用于 ListBox,但洞察力很棒,它也可能适用于网格:

    简而言之:项目是异步加载到 ListBox 中的,因此如果您在 CollectionChanged 事件(或类似事件)中调用 ScrollIntoView(),它将没有任何项目,因此不会滚动。

    希望它有所帮助,它肯定对我有所帮助! ;-)

    【讨论】:

      猜你喜欢
      • 2019-03-02
      • 2019-03-17
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 2014-10-18
      相关资源
      最近更新 更多