在WPF Datagrid中跳转到Row

时间:2012-01-18 13:59:45

标签: c# .net wpf wpfdatagrid

有人可以帮助,我正在尝试创建一个允许用户输入行号的方法,该方法将“跳转”到该行。例如,当传入行号时。

我使用dataTable作为datagrid的项目源。

用户可以看到数据网格侧面的行号。

Exmaple:第250行中的用户类型,数据网格被移动到该行。

我正在使用WPF数据网格和c#4.0。

3 个答案:

答案 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();
         }
      }
   }
}