|
3 / 4 / 0
Регистрация: 19.09.2016
Сообщений: 91
|
||||||
WPF Фильтрация DataGrid через ComboBox10.07.2019, 07:56. Показов 18004. Ответов 37
Доброе время! Изучая WPF и MVVM я столкнулся с задачей, с решением которой не хватает знаний. Суть в следующем:
Приложение работает с некими товарами и определены они в Product для БД и затем в ProductVM для работы с View. Во вьюшке товары выгружаются в DataGrid. В ComboBox выводится наименование поставщиков. Задача состоит в том чтобы при выборе в ComboBox-е поставщика, в DataGrid выводились только товары у которых выбранный поставщик.
Весь пример можно скачать тут https://yadi.sk/d/tkd2d6Yn54eLIQ
0
|
||||||
| 10.07.2019, 07:56 | |
|
Ответы с готовыми решениями:
37
Фильтрация данных в WPF DataGrid Фильтрация в DataGrid по данным из TextBox или CheckBox |
|
Модератор
|
||
| 23.07.2019, 15:07 | ||
Сообщение было отмечено AII как решение
РешениеDataGrid не подходит.P.S И посмотрите как работает CollectionViewSource - в ней осуществляется автоматическая динамическая фильтрация. Изменив название поставщика продукта - это продукт сразу будет автоматически фильтроваться.
1
|
||
|
3 / 4 / 0
Регистрация: 19.09.2016
Сообщений: 91
|
||
| 23.07.2019, 15:54 [ТС] | ||
|
Спасибо огромное, за Ваш ответ, очень помогли, я немного взглянул на свой код с другой стороны. Мне раньше казалось что вся работа должна быть сосредоточена в VM. И соответственно события происходящие в самой форме я совсем не рассматривал. А так же думал что в CB окна, по большому счету вообще ничего не должно быть ))). А так то в принципе, мы не трогаем остальные уровни, а просто форма работает с теми данными которые у неё есть.
Добавлено через 8 минут
0
|
||
|
1596 / 601 / 185
Регистрация: 05.12.2015
Сообщений: 970
|
||||||
| 23.07.2019, 16:14 | ||||||
|
Для решения твоей задачи у тебя уже все есть.
Просто добавить пару строчек кода в VM
0
|
||||||
|
Модератор
|
||
| 23.07.2019, 16:41 | ||
|
Так же в CB можно прописать кое-какую логику работы View. Допустим, команда кнопки привязана к свойству VM, а Click обрабатывается внутри View для изменения отображения каких-то элементов.Но надо стремиться к тому, чтобы CB меньше загружать. По возможности всё реализовывать в XAML.
0
|
||
|
Модератор
|
||
| 23.07.2019, 16:54 | ||
|
Создание решения начинается с проектирования его архитектуры. На этом этапе определяется общее ТЗ и ТЗ к каждой части приложения. Чем подробнее и детальнее будут составлены эти ТЗ тем проще будет потом их реализовывать и меньше потребуется переделок. Ещё такой совет, на начальном этапе обучения, лучше раздельные части решения делать не в отдельных папках, а в отдельных проектах. Вам тогда будет проще понять границы видимостей типов и данных. Начинать делать решение надо с Model. Её надо полностью реализовать и отладить в КОНСОЛЬНОМ приложении. Перед созданием View необходимо определить интерфейс VM и реализовать его в виде Контекста Данных Времени Разработки. Я его обычно реализую как VM времени разработки - VMDD. Это сильно облегчает создание View и позволяет её отлаживать независимо от Model. Добавлено через 1 минуту P.S. Прочитайте темы из Готовые решения, примеры и рекомендации начинающим на WPF [Элд Хасп] Там есть и подробная реализация готовых WPF+MVVM решений.
0
|
||
|
3 / 4 / 0
Регистрация: 19.09.2016
Сообщений: 91
|
||
| 24.07.2019, 06:18 [ТС] | ||
|
Большое спасибо, за помощь и за такой развернутый ответ. К сожалению, когда самостоятельно изучаешь какую то обширную и достаточно сложную область, особенно программирование, то как слепой тыркаешься в разные стороны пытаясь ухватиться за любую твердую поверхность или ориентир. Документация очень какая то скудная. По этому Ваши советы очень важны. Еще раз спасибо!
Добавлено через 11 минут
0
|
||
|
Модератор
|
||||
| 24.07.2019, 08:26 | ||||
|
Я сам пытался несколько раз читать учебники, но.... Для меня проще оказалось METANIT, professorweb, MSDN и документация MS. По ним и учился. Начал освоение C# и WPF меньше года назад. До этого знал только их названия. Добавлено через 4 минуты А вот опыт WF, по моим наблюдениям, не просто будет лежать балластом, а будет даже негативно влиять на освоение современных платформ. Добавлено через 59 секунд
0
|
||||
|
3 / 4 / 0
Регистрация: 19.09.2016
Сообщений: 91
|
|
| 24.07.2019, 08:35 [ТС] | |
|
Спасибо!
0
|
|
|
1 / 1 / 1
Регистрация: 19.12.2016
Сообщений: 153
|
||
| 12.10.2021, 19:49 | ||
|
Элд Хасп,
0
|
||
|
1 / 1 / 1
Регистрация: 19.12.2016
Сообщений: 153
|
||||||||
| 13.10.2021, 06:03 | ||||||||
|
Элд Хасп,
Добавлено через 3 минуты
0
|
||||||||
|
Модератор
|
|||||||
| 13.10.2021, 12:14 | |||||||
|
Там ничего кроме определения прохождения элемента через фильтр быть не должно. А, как я понял, вы там даже меняете значения свойств UI элементов. Это всё выполняется в одном UI потоке и вполне возможна взаимоблокировка методов. Сделайте простой фильтр:
Если всё ОК, то понемногу добавляйте логику и определите после чего он станет тормозить.
1
|
|||||||
|
1 / 1 / 1
Регистрация: 19.12.2016
Сообщений: 153
|
|
| 13.10.2021, 17:28 | |
|
Элд Хасп, А как правильно фильтровать большой список чтоб View не зависала?
0
|
|
|
Модератор
|
||
| 13.10.2021, 19:24 | ||
|
Для этого используется или ленивая подгрузка с фильтрацией на уровне Модели. Или, что более типично для WPF, технологии виртуализации. В этом случае через фильтр проходят только те элементы которые отображаются в данный момент. Но вы же писали что проблема не размере списка?
0
|
||
|
1 / 1 / 1
Регистрация: 19.12.2016
Сообщений: 153
|
||
| 19.10.2021, 06:52 | ||
|
Элд Хасп,
0
|
||
|
Модератор
|
||
| 19.10.2021, 11:35 | ||
|
Два основных описал выше: подгрузка коллекции по мере промотки в GUI и использование виртуализации. И то, и другое в двух словах не объяснишь. Добавлено через 54 секунды marat1905, по вопросу в теме получилось всё сделать?
0
|
||
|
1 / 1 / 1
Регистрация: 19.12.2016
Сообщений: 153
|
|
| 19.10.2021, 12:03 | |
|
Элд Хасп, Да получилось нашел ошибку у себя.
1
|
|
| 19.10.2021, 12:03 | |
|
Фильтрация ListView или DataGrid по нескольким критериям?
Combobox + datagrid + бд WPF. DataGrid в ComboBox
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|