|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
|||
Приложение MVVM. VMs и навигация08.02.2023, 19:59. Показов 10285. Ответов 134
Здравствуйте.
Имеются следующие вопросы. Как при соблюдении mvvm передать в VM свойства view такие как SelectedItem? Знаю, что можно передавать через параметр команды, но в моем случае за раз в VM нужно отправить 2 объекта - логин и пароль (в модели у меня нет этих свойств, соответственно, я не должен определять их в VM. Хотя многие так делают, но это всё-таки нарушение). Нашёл решение с помощью применения MultiBinding для параметра, но мне кажется, что это слишком громоздко, так как при таком подходе каждый раз придется реализовывать конвертер. Вообще, говоря, очень трудно приходится, когда в VM нет нужных свойств, от этого обстоятельства не выходит отключать кнопку (альтернативой может служить триггер на свойство IsEnabled во view, но от этого снова приходится прикладывать больше усилий из-за описания стиля и, возможно, конвертера. Элд Хасп подсказывал, что для этих целей можно сделать прокси класс, но я недоумеваю как и где. Было бы удобно, если бы по правилам mvvm в VM допускалось хранить все необходимые свойства, а не только те, которые имеются в модели. По той же причине не стал помещать в VM команду для кнопки, которая предназначена для входа в роли гостя. Пока что в коде view подписал хелпера на щелчок по ней. В результате просто должен произойти переход к другому view, это не логика модели. Сама навигация вызывает дополнительный вопрос, нужны рекомендации по её реализации. Также можно отдельно рассмотреть модель. Правда там пока что немного кода. Важны все замечания. Ещё имеется dll библиотека с вспомогательными классами, применимыми к mvvm. По ней тоже можно сделать замечания. Вот ссылка на репозиторий https://github.com/INexteR/NewTrade/tree/Trial. В нем также содержится документ с заданием.
0
|
|||
| 08.02.2023, 19:59 | |
|
Ответы с готовыми решениями:
134
Приложение MVVM, VMs и навигация: Создание Модели Авторизация. Приложение MVVM. VMs и поиск (фильтрация по текстовому значению) Приложение MVVM. VMs и фильтрация по значению свойства (выбрать по производителю) |
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
||
| 27.02.2023, 11:55 [ТС] | ||
|
0
|
||
|
Модератор
|
||
| 27.02.2023, 12:31 | ||
|
Я тоже сейчас прочитал. Нужно будет ещё добавлять диалоговое окно для выбора файла изображения, потом его уменьшение до нужного размера и сохранение в папке сборки. Проблема будет при серверном использовании: когда клиента запускаешь на разных компах, а файлы изображений будут локально на каком-то одном. Но думаю для задания имеется ввиду одно локальное приложение. О масштабировании, сети - вроде, ничего нет в задании.
0
|
||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
||
| 27.02.2023, 13:18 [ТС] | ||
|
Добавлено через 36 минут Элд Хасп, а зачем у нас в VM появился SelectedProduct? Мы же его можем передавать через параметр команды Добавлено через 8 минут И вот такой вопрос: до сих пор товары загружались в конструкторе VM. Как их подгрузить, делая это вне конструктора? И вообще, их надо загрузить только один раз и держать где-то. Допустим, мы выполняем навигацию к авторизации, затем обратно переходим к товарам, неправильно ведь будет каждый раз их извлекать из бд. Для этого нужно создать какое-то хранилище, верно?
0
|
||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
|
| 27.02.2023, 13:21 [ТС] | |
|
0
|
|
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
||||||
| 27.02.2023, 13:28 [ТС] | ||||||
|
"Товары, которых нет на складе, должны отображаться на сером фоне"
Правильно ли сделал? Это шаблон данных товара
0
|
||||||
|
Модератор
|
|||
| 27.02.2023, 13:29 | |||
|
Они у нас грузятся из Модели магазина _shop.GetProducts().Исходную коллекцию содержит именно магазин. Если происходит какие-то изменения, то магазин должен уведомлять об этом. Добавлено через 40 секунд
0
|
|||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
|
| 27.02.2023, 13:33 [ТС] | |
|
0
|
|
|
Модератор
|
||
| 27.02.2023, 13:34 | ||
List<Product>.При первом запросе заполнить его, а потом просто его возвращать. Для однопользовательского локального приложения это допустимо.
0
|
||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
|||
| 27.02.2023, 13:40 [ТС] | |||
|
То есть первый раз получили товары из модели, в ней они сохранились, при следующем обращении выдаются те же товары; не происходит обращения к контексту
Добавлено через 1 минуту Добавлено через 2 минуты
0
|
|||
|
Модератор
|
||
| 27.02.2023, 13:42 | ||
|
Хранилищем называют место где данные сохраняются между сеансами приложений. В нашем случае это БД. Кроме Хранилища бывает ещё локальный кеш данных, который используется для ускорения работы с ними во время сеанса приложения. Вы говорите именно о кеше. Так как мы используем EF то функцию кеша предоставляет Контекст БД. Но для этого его экземпляр нужно создать при старте приложения и не уничтожать до конца приложения. Вся работа с БД должны происходить через этот единственный экземпляр. Но в такой работе есть свои нюансы как правильно редактировать сущности, сохранять их, особенно с учётом наличия навигационных свойств. Поэтому чтобы сейчас не уносится в дебри тонкостей работы EF я пошёл по пути "одноразовых" контекстов. Что касается "перезапросов", то экземпляры VM у нас сохраняются в свойствах локатора весь сеанс приложения. Поэтому парезапросов не будет.
0
|
||
|
Модератор
|
|||
| 27.02.2023, 13:52 | |||
|
Можно, но тогда нужно делать уведомление о том что это поле изменилось и VM нужно обновить отражение коллекции. Если нужно - это не проблема сделать. Но придётся делать уже полно функциональную модель списка товаров со всеми уведомлениями.
0
|
|||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
||||
| 27.02.2023, 13:59 [ТС] | ||||
|
0
|
||||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
|||
| 27.02.2023, 19:21 [ТС] | |||
|
Так как фильтрации и поиски выполнены, можно продвинуться дальше. А далее в задании уже идет речь об удалении товара.
0
|
|||
|
Модератор
|
||||
| 27.02.2023, 20:17 | ||||
|
Уточняйте у того кто дал задание.
0
|
||||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
||
| 27.02.2023, 20:28 [ТС] | ||
|
Добавлено через 1 минуту Но мы будем делать с открытием новых окон (выше я просто интересуюсь)
0
|
||
|
Модератор
|
|||
| 27.02.2023, 20:35 | |||
|
Да, пары пароль-логин хранятся в Модели. Я создам Конструктор страницы редактирования. Вы потом создадите компоновку. Постараюсь сегодня.
0
|
|||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
|||
| 27.02.2023, 20:42 [ТС] | |||
|
0
|
|||
| 27.02.2023, 20:42 | |
|
MVVM первое приложение WPF приложение с паттерном MVVM Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|