Pro*_*mer 8 c# wpf datagrid scroll
我试图向后滚动一个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]);
}
Run Code Online (Sandbox Code Playgroud)
仅当itemNum
当前未显示行时,此选项才会向下滚动.
例如,如果DataGrid足够长以容纳10行而我有20行,我需要调用此函数11次(直到itemNum
11)才能滚动到下一行.
如果行已经适合网格(即使它是屏幕上的最后一行),它也不会向下滚动.
我希望实现这一点,当我调用此方法时,网格将下一行放入网格的顶部(如滚动条所做).为什么它不起作用?
Tsa*_*abo 19
使用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;
}
Run Code Online (Sandbox Code Playgroud)
抱歉没有意识到WPF网格没有那个.关于滚动的观点保持有效.
ScrollIntoView仅在项目不在视图中时才会滚动,如果它在当前可见行的下方,则会使其成为最后一行,因此当您滚动查看第11项时,它看起来像是滚动到第二项.
这项工作应该适合你.滚动到最底部的行,然后向上滚动到您需要的任何行.注意,这里你实际上需要更新布局,否则它会在再次向上滚动之前忽略第一个滚动的结果.
dataGridView.ScrollIntoView(DataGrid1.Items[DataGrid1.Items.Count - 1]);
dataGridView.UpdateLayout();
dataGridView.ScrollIntoView(DataGrid1.Items[itemIndex]);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21722 次 |
最近记录: |