wpf datagrid только для чтения перейти к строке во время ввода - PullRequest
1 голос
/ 08 февраля 2011

В таблице данных, доступной только для чтения, где отображаются табличные данные, я хочу иметь (готовую) функцию для перехода к строке, когда пользователь вводит некоторые символы.

Скажите, что доступны следующие записи:

  • ... Некоторые данные ...
  • Канцелярские товары
  • Заказы
  • ... Больше данных ...

Когда пользователь вводит «O», следует выбрать строку с идентификатором «Канцелярские товары». Когда пользователь после этого набирает «r», должна быть выбрана строка «Заказы».

Мой вопрос на самом деле таков: есть ли готовое решение для этого или мне нужно создать что-то нестандартное?

Ответы [ 2 ]

1 голос
/ 08 февраля 2011

Для этого нет функции "из коробки", вам нужно создать свою собственную.

Я предлагаю:

  • прослушивание клавиатуры (например, когда фокус находится на DG)
  • хранение пораженных ключей в буфере
  • после каждого keyStroke цикл каждой ячейки в вашем источнике данных для поиска первого соответствия (в зависимости от размера данных, это может быть ОЧЕНЬ дорого, так как вам нужно сравнить строки для каждой ячейки, для каждой отдельной ячейки в вашем источнике данных в худшем случае ...)
  • установить currentCell dataGrid в заданную позицию строки / столбца (есть несколько способов сделать это)

так что это не так сложно, но требует некоторого кодирования и, самое главное, это может превратиться в кошмар производительности, если у вас огромные наборы данных.

1 голос
/ 08 февраля 2011

В значительной степени вам придется создать текстовое поле для входных данных поиска, а затем отфильтровать коллекцию, с которой связана ваша DataGrid, с помощью LINQ (или любым другим способом, который вам нравится) и клонировать результирующие объекты в другую коллекцию.Наконец, повторно свяжите DataGrid с этими клонированными объектами и заново установите DataContext окна, чтобы DataGrid узнал об изменении привязки.Наконец, реализуйте проверку, чтобы, если пользователь покинул и пустое текстовое поле, вы заново привязали исходную коллекцию и заново установили DataContext.

Надеюсь, это поможет;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...