有人可以帮助,我正在尝试创建一个允许用户输入行号的方法,该方法将“跳转”到该行。例如,当传入行号时。
我使用dataTable作为datagrid的项目源。
用户可以看到数据网格侧面的行号。
Exmaple:第250行中的用户类型,数据网格被移动到该行。
我正在使用WPF数据网格和c#4.0。
答案 0 :(得分:2)
除了@blindmeis建议的
this._myview.MoveCurrentTo()
添加以下行:
dataGridView.ScrollIntoView(dataGridView.SelectedItem);
答案 1 :(得分:0)
我使用ICollectionView MoveCurrentTo方法。
this._myview.MoveCurrentTo()
好处是ICollectionView知道排序等等。
也许你告诉我们你的itemssource是什么以及为什么用户必须知道行“index”。用户是否计算屏幕上的行数?或者您希望用户使用Key = 250来到达行?
答案 2 :(得分:0)
这应该有效:
将所选项目设置为Blindmeis建议(或通过您喜欢的任何方法)后,使用myGrid.ScrollIntoView(myGrid.SelectedItem)
。请注意,这可能需要根据UI处理网格选择的方式进行调整。
或者,未经测试的kludge:
protected void JumpToRow(int rowNumber)
{
if(rowNumber>=0 && myGrid.Items!=null && rowNumber<myGrid.Items.Count)
{
var border = VisualTreeHelper.GetChild(myGrid, 0) as Decorator;
if (border != null)
{
var scroll = border.Child as ScrollViewer;
if (scroll != null) scroll.ScrollToEnd();
scroll.ScrollToStart();
for(int i=0;i<rowNumber;++i)
{
scroll.LineDown();
}
}
}
}