|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
||
Приложение MVVM, VMs и навигация: Создание Модели Авторизация.08.02.2023, 19:59. Показов 2442. Ответов 36
Метки нет (Все метки)
Имеются следующие вопросы. Как при соблюдении 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 | |
|
Ответы с готовыми решениями:
36
Приложение MVVM. VMs и навигация
|
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
|
| 12.02.2023, 16:47 [ТС] | |
|
Элд Хасп, удивительно, но блокировка на самом деле исчезла, когда я сделал синхронную версию, обернутую в Task.Run
Добавлено через 36 секунд Но а в чем кроется проблема в моей реализации?
0
|
|
|
Модератор
|
||
| 12.02.2023, 16:59 | ||
|
А я не могу этот код у себя проверять - нет сервера. И ставить его нет желания - и так комп захламлён выше крыши. Для общего развития почитайте эти темы: Где моя асинхронность? Как правильно использовать async? Асинхронность в .NET и C# в частности. async/await и Task
1
|
||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
|
| 12.02.2023, 17:10 [ТС] | |
|
0
|
|
|
Модератор
|
||
| 12.02.2023, 19:24 | ||
|
По факту он происходит в синхронном потоке. И само определение пользователя сделали неверно. Скиньте фиксацию с синхронным методом - я подправлю.
0
|
||
|
Модератор
|
||||||
| 12.02.2023, 22:09 | ||||||
|
INexteR, посмотрел интерфейсы.
Забыли про событие - добавил его. И дополнил документацию. См. Добавлено событие изменения состояния авторизации. И дополнена XML до… . Теперь можно сделать реализацию этих интерфейсов в Модели. Типы будут реализовываться по такому принципу:
В рабочие дни я смогу только смотреть код и здесь в теме предлагать изменения.
0
|
||||||
|
Модератор
|
|
| 12.02.2023, 22:14 | |
|
Метод
LoginAsync, скорее всего, не понадобится.Метод Login будет "мгновенный".Ещё подумайте нужен ли метод или методы первичной верификации логина и пароля? Например, на минимальную длину и допустимые символы. Что-то в таком духе string VerifyLogin(string login) - возвращает либо пустую строку, либо сообщение об ошибке.
0
|
|
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
|
| 23.03.2023, 16:36 [ТС] | |
|
Элд Хасп, вопрос по модели. Почему мы сделали класс IShop производным от IAuthorization? Я согласен с тем, что система магазина может содержать раздел авторизации как у нас, но в то же время магазин не обязательно является авторизацией. По-моему правильным выбором здесь будет отношение "содержит": магазин содержит авторизацию. А у нас сформировано отношение "является". Изначально я поместил объект авторизации в объект магазина, смоделировав тем самым отношение "содержит", но Вы этот вариант исправили
0
|
|
|
Модератор
|
|||
| 23.03.2023, 20:04 | |||
|
Так же не путайте интерфейсы и базовый класс. Интерфейс как раз таки и сообщает, что тип "что-то содержит", а не то что он "чем-то является". Например, IComparable сообщает, что тип содержит метод сравнения. Но никак не говорит о том, что тип сам является компаратором.Добавлено через 1 минуту По возможности - помогу.
0
|
|||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
||
| 23.03.2023, 20:15 [ТС] | ||
|
0
|
||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
|
| 06.04.2023, 15:24 [ТС] | |
|
Элд Хасп, здравствуйте. Есть следующий вопрос. Мне необходимо отправить информацию об элементах в word, напечатать в нем. Какой слой должен выполнять эту задачу? Я предполагаю, что в модели должен быть метод, возвращающий коллекцию для печати, то есть он будет только формировать её для вызывающего кода
0
|
|
|
Модератор
|
||
| 06.04.2023, 21:19 | ||
|
Однозначно же это не показать данные в Окне. Значит это Модель. А уже как в Модели это реализовано: статическая служба из методов, какой объект-Модель, Репозиторий и др. - это всё детали реализации Модели (слоя).
0
|
||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
||
| 06.04.2023, 21:49 [ТС] | ||
|
Добавлено через 22 минуты Элд Хасп, а вот помните такое требование в задании, где нужно было удалить изображение из папки проекта. Почему это не могла делать модель?
0
|
||
|
Модератор
|
||||
| 06.04.2023, 22:03 | ||||
|
Папка с файлами расположена на компьютере с View. И Модель просто "не видит" этой папки. Добавлено через 4 минуты Забыл ещё об одном ГЛАВНОМ!!! слое: App. Как запускается приложение, в каких папках находится сборка и т.п. знания - это прерогатива App. Просто в данной реализации у нас View и App находится в одном проекте, поэтому граница между ними размыта. Созданием файлов, их изменением может заниматься либо Модель, либо App (App может всем заниматься). Добавлено через 1 минуту Но делать это ради пары методов.... лень.
0
|
||||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
||
| 07.04.2023, 08:50 [ТС] | ||
|
0
|
||
|
Модератор
|
||
| 07.04.2023, 20:20 | ||
|
Вы вообще видели в Студии шаблоны не проектов, а многопроектных приложений? Тот же паттерн MVVM (или MVC/MVP). Где шаблоны под их реализацию? Их попросту нет. И теперь это значит, что все Решения нужно делать однопроектными? Нет, конечно. Разделение WPF View и App сложно только из-за того, что почти всегда многие ресурсы задаются в App. А при реализации View в другом проекте Дизайнер XAML их не будет видеть. Поэтому в простых (и не только) реализациях WPF View и App бывают в одном проекте. Но то что они в одном проекте это же не означает что это ОДНО И ТО ЖЕ.
0
|
||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
|||
| 08.04.2023, 09:49 [ТС] | |||
|
0
|
|||
|
Модератор
|
||
| 08.04.2023, 10:13 | ||
|
Но глобально там придётся решат проблему ресурсов App для режима разработки. По факту это обычно выливается в то что проекты, использующие ресурсы App, всё равно имеют тип "Приложение WPF", но собираются не в exe, а в dll. И все ресурсы App, используемые View, также задаются и в проекте View. Может не в полном размере, но в достаточном для работы Дизайнера XAML без ошибок и предупреждений.
1
|
||
| 08.04.2023, 10:13 | |
|
Свойства модели в MVVM IdHttp авторизация + навигация по сайту MVVM работа со списком в модели Авторизация в БД MySQL MVVM
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|