|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
|||
Приложение MVVM. VMs и навигация08.02.2023, 19:59. Показов 9740. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|