wpf datagrid readonly在键入时跳转到行

时间:2011-02-08 15:59:45

标签: c# wpf datagrid

在显示表格数据的只读数据网格中,我想让(开箱即用的)功能在用户键入某些字符时跳转到一行。

说以下记录可用:

  • ...一些数据......
  • 办公用品
  • 订单
  • ......更多数据......

当用户键入“O”时,应选择ID为“Office supplies”的行。当用户在此之后键入“r”时,应选择“订单”行。

我的问题实际上是:这是否有开箱即用的解决方案,还是我必须创建自定义的东西?

2 个答案:

答案 0 :(得分:1)

您几乎必须为搜索输入创建一个文本框,然后使用LINQ(或您喜欢的任何其他方式)过滤DataGrid绑定的集合,并将克隆生成的对象转换为另一个集合。最后,将DataGrid重新绑定到那些克隆对象并重新设置窗口的DataContext,以便DataGrid知道绑定更改。最后,实现检查,如果用户离开并清空文本框,则重新绑定到原始集合并再次重新设置DataContext。

希望这会有所帮助;)

答案 1 :(得分:1)

没有“开箱即用”的功能,你必须创建自己的。

我建议:

  • 聆听键盘(例如当焦点在DG上时)
  • 将受影响的密钥存储在缓冲区中
  • 在每次keyStroke之后,循环dataSource中的每个单元格以查找第一个匹配项(取决于数据大小,这可能非常昂贵,因为您必须为每个单元格进行字符串比较,对于dataSource中的每个单元格在最糟糕的情况下...)
  • 将dataGrid的currentCell设置为给定的行/列位置(有几种方法可以做到这一点)

所以这并不复杂,但它需要一些编码,而且最重要的是,如果你有庞大的数据集,这可能会变成一场性能噩梦。