Не могу поверить, что я озадачен этой довольно простой вещью. Первоначально я опубликовал это в обсуждениях кодового комплекса WPF, но не получил ответа. Итак, я пытаюсь здесь:
Я не могу найти способ сделать это. Я создаю сетку данных, чей текст данных изначально заполнен строками таблицы. Я реализовал функцию поиска, которая будет возвращать несколько строк в зависимости от условия. Предположим, я хочу отобразить только эти строки, как мне уничтожить изначально созданный текстовый текст и добавить только что отфильтрованную коллекцию?
Я наивно начал делать это так:
(Позднее редактирование. Кажется, я не могу набрать здесь код Generics - приведение в следующей строке предполагается для приведения datagrid. Элементы в MyType (например))
IEnumerable rows = datagrid.Items.Cast ();
IEnumerable FilterRows = rows.Where (row => row.someCondition == true);
как мне сделать так, чтобы моя сетка данных отображала только отфильтрованные строки? Просто делаю:
datagrid.DataContext = null;
datagrid.DataContext = FilterRows;
не работает (даже пахнет по какой-то причине).
Мне также нужно сделать обратное (как только я получу эту работу). Некоторое нажатие кнопки должно позволить пользователю «очистить» результаты поиска и снова подключить DataContext к «строкам» (в приведенном выше фрагменте).
Чего мне не хватает?