|
2 / 1 / 1
Регистрация: 17.11.2020
Сообщений: 105
|
|||||||||||||||||||||
UWP Разбор MVVM подхода с использованием API и Json04.02.2022, 21:07. Показов 9486. Ответов 126
Доброго времени суток,
Как уже писал, перехожу на подход MVVM и сталкиваюсь с проблемами, шерстил форум, но не нашел подходящие решение для моего случая. Очень буду благодарен за помощь. Логика следующая, пользователей вводит номер телефона, по апи идет запрос и я получаю ответ в виде JSON, и если JSON приходит в response, то панель с смс должна появится. Если номер не правильный то приходит в error значение. Проблема вот в чем. Как мне вернуть данные из Model в ViewModel, не используя статический класс или свойство ? Да в принципе, как правильно управлять данными которые пришли в model и передать их в Viewmodel на примере JSON. View:
Так же я понимаю, что возможно здесь ошибки подхода MVVM, любые поправки с теплотой приму
0
|
|||||||||||||||||||||
| 04.02.2022, 21:07 | |
|
Ответы с готовыми решениями:
126
Создание программ с использованием структурного подхода Напишите программу (с использованием ООП подхода) |
|
Модератор
|
||
| 15.02.2022, 21:44 | ||
|
Ihave, фиксацию с типовой передачей параметра скинул тоже в новую ветку.
Добавлено через 1 минуту
0
|
||
|
2 / 1 / 1
Регистрация: 17.11.2020
Сообщений: 105
|
|||
| 15.02.2022, 22:40 [ТС] | |||
|
Элд Хасп,
Такс понизил сборку до Windows 10. Обновил реп 3e1ffe3 и закомментировал лишние. Я понимаю, что вчерашними своими действиями вас запутал, забыл закомментировать, но давайте просто сосредоточемся только пока на Sign без News и тд. Я поменял, то что вы просили в ToDo, однако обьекты не связываются. Тоесть Sing.xaml не связан с SignVM, не обновляет и не получает данные. Я получаю ошибку при взаимодействии с кнопкой. Как я понял и VM и M ДОЛЖНЫ быть Net 2.0 оболочкой ? я бы не переходил, но как то так получилось...Добавлено через 10 минут
0
|
|||
|
Модератор
|
|||
| 15.02.2022, 22:58 | |||
|
В данном случае сделал так, чтобы у вас не было "соблазна" засунуть в них типы относящиеся к GUI. Проверял по брекпоинтам. Может в первую внёс не корректные изменения из-за того что забыл сделать фиксацию. Сейчас проверю.
0
|
|||
|
2 / 1 / 1
Регистрация: 17.11.2020
Сообщений: 105
|
||||||
| 15.02.2022, 23:11 [ТС] | ||||||
|
Да второй вариант работает на отлично, считаю что его надо использовать, так как будет потом навигации и тд внутри главной панели... но пока это далекая история
![]() У меня несколько вопросов:
InfoBar - имеет состояние Severity и у него состояния только: Error,Warning,Success,Informational передать их по string не вариант, контрол использовать категорическии нельзя, как можно выкрутиться? Конвертором ? Если несколько ViewModel, я просто создаю их и делаю похожую привязку как и на SignVM в APP ?
0
|
||||||
|
Модератор
|
||||||||
| 15.02.2022, 23:17 | ||||||||
|
Ihave, да, там ошибка в App.
Вместо поля присваиваю значение локальной переменной и оно теряется. Нужно убрать тип, оставить только имя поля:
Старый комп потянет? Добавлено через 5 минут Ведь повышая версию, вы отрезаете множество потенциальных покупателей.
0
|
||||||||
|
2 / 1 / 1
Регистрация: 17.11.2020
Сообщений: 105
|
|||
| 15.02.2022, 23:19 [ТС] | |||
|
0
|
|||
|
2 / 1 / 1
Регистрация: 17.11.2020
Сообщений: 105
|
|||
| 15.02.2022, 23:21 [ТС] | |||
|
Добавлено через 25 секунд
0
|
|||
|
Модератор
|
|||
| 15.02.2022, 23:24 | |||
|
А не юзаю UWP. Надо поинтересоваться у тех кто его активно использует. Позову limeniye. Сами посмотрите темы в Разделе, кто отвечает на вопросы по UWP и позовите их сюда. Добавлено через 1 минуту Но пакет нацеливания, вроде, ставится тоже не выше ОС. Проверю - отпишу ещё.
0
|
|||
|
2 / 1 / 1
Регистрация: 17.11.2020
Сообщений: 105
|
|||||||||
| 15.02.2022, 23:34 [ТС] | |||||||||
Cannot directly bind type 'ViewModel.SignVM+InfoBarSeverity' to 'Microsoft.UI.Xaml.Controls.InfoBarSever ity'. Use a cast, converter or function binding to change the type Добавлено через 3 минуты Элд Хасп, ответьте пожалуйста на вопросы еще Post: 84 ![]() Я завтра обновлю программу и добавлю еще одну страницу, я простестирую все и если будут проблемы отпишу.
0
|
|||||||||
|
Модератор
|
|||
| 15.02.2022, 23:53 | |||
|
Передаётся он в VM. Что за метод будет выполняться по делегату VM неизвестно. Она просто вызывает исполняет делегат, если он не нулевой. Если делегатов много, то их записывают (обычно методом регистрации) в сервис и уже сервис передают VM. Интерфейс такого сервиса объявляется на уровне VM. Добавлено через 4 минуты Кроме предложенных двух способов есть ещё такой: если VM-ей известное количество, можно в ресурсах App объявить локатор в свойствах которого будут все VM. И страницы привязывать к свойствам локатора.
1
|
|||
|
Модератор
|
||||||||
| 16.02.2022, 02:32 | ||||||||
|
Вам нужно выдвинуть-задвинуть Панель. Как эти действия связанны с состоянием Модели? Ни как. Значит и такого свойства в VM быть не должно. Решить это можно многими способами. Даже если вам нужна привязка элементам на странице, то добавьте странице ещё одно свойство для Навигатора. И так как Навигатор это часть View, то вы можете без нарушения MVVM привязываться к этому свойству. Второй типовой для WPF способ это создание Навигатора в ресурсах App. Детально не могу показать поскольку не понимаю как эти ваши панели Навигации будут связанны со страницей. Они будут ТОЛЬКО на этой странице? Обычно это бывает общий элемент Окна, и реализуется он в Окне, а не на странице. Посмотрите различные типы макетов Окон: Основы проектирования навигации для приложений для Windows. Добавлено через 50 минут
0
|
||||||||
|
2 / 1 / 1
Регистрация: 17.11.2020
Сообщений: 105
|
|||||||||||||||||||||
| 19.02.2022, 16:36 [ТС] | |||||||||||||||||||||
|
У меня как раз вопрос:
Вот к этому вопрос сразу:
Отсюда вопрос:
Обновил реп 09e72cc
0
|
|||||||||||||||||||||
|
Модератор
|
||||||||||
| 19.02.2022, 18:11 | ||||||||||
|
Ihave, пока отвечу на часть вопросов.
Если авторизация потребует ввода кода из SMS, то изменится состояние модели. Это состояние Модели отразится в ViewModel (один из вариантов) как вызов диалога получения кода. А будет по этому диалогу показана форма для пользовательского ввода, или диалог сам считает смс - это для VM "по барабану". Насколько я знаю, - это в любом случае не произвольные строки. А раз так, то должен быть их список и для формирования запроса надо обращаться к нему, а не вводить его "руками". Если не нравиться enum - значит нужно придумать что-то иное. Но концепция должна быть такая же. Добавлено через 3 минуты
0
|
||||||||||
|
2 / 1 / 1
Регистрация: 17.11.2020
Сообщений: 105
|
||||
| 19.02.2022, 19:46 [ТС] | ||||
и должно попадать под рамки MVVM
0
|
||||
|
Модератор
|
||
| 19.02.2022, 19:49 | ||
|
Ваша VM должна работать как служба. Никакого знания о GUI, даже о консоли у неё нет. Она отражает Модель в своих свойствах - это весь её функционал от а до я. Вы можете делать КАК УГОДНО, но тогда это не будет MVVM. Вы же хотите построить приложение в правильной реализации MVVM. Уже в тридесятый раз вам пишу, ЗАБУДЬТЕ ПРО GUI! Считайте что у вас его нет. И постройте сначала Модель, которая пройдёт ВСЕ ТЕСТЫ. Пока вы этого не сделаете, то так и будете блуждать в трёх соснах. Всё что вас должно интересовать на этом этапе - это как создать экземпляр Модели в App. Пока вы это не сделаете ни о каком WPF даже не думайте.
0
|
||
|
2 / 1 / 1
Регистрация: 17.11.2020
Сообщений: 105
|
|||||||
| 19.02.2022, 20:18 [ТС] | |||||||
0
|
|||||||
|
Модератор
|
||||||||||
| 19.02.2022, 20:48 | ||||||||||
|
В моей реализации BaseInpc для этого служит метод OnPropertyChanged, но присваивать значение свойству надо ОБЯЗАТЕЛЬНО через метод Set. Реализацию я вам поставил неверную - та тестовая какая-то была. Сейчас поменял на правильную. Пример использования:
VM вызывает этот метод. А что там будет изменено в GUI она не знает и знать не должна. Добавлено через 6 минут Но у вас появляются вопросы связанные с состоянием Модели (показ скрытие UI элементов). А в Модели нет соответствующих состояний. Из-за этого приходится возвращаться опять к Модели. То есть вы ни как не привыкните мыслить от Данных. Вы мыслите "Вот мне пользователю надо показать это (что-то там), для этого нужно в VM мне нужно добавить свойство управляющее UI элементом". А должны мыслить так "Для пользователя нужно показать "это", "это" соответствует такому-то состоянию Модели, для этого надо в Модели реализовать тото и тото, потом это отразить в такое-то свойство VM". Добавлено через 4 минуты Такой из офлайна пример. Вы строите дом вам потребовался камень - уровень GUI. Вы ищите его и заказываете - уровень Модели. После этого его к вам привозит транспортная компания - уровень VM. Какая бы ни была транспортная компания (VM) она не может привести материала которого нет у производителей (Модель).
0
|
||||||||||
|
Модератор
|
|
| 19.02.2022, 20:50 | |
|
0
|
|
| 19.02.2022, 20:50 | |
|
Разбор JSON, используя Newtonsoft.Json Моделирование работы РЛС с использованием объектно-ориентированного подхода Использованием навигационного подхода без применения SQL запросов Моделирование работы РЛС с использованием объектно-ориентированного подхода Парсинг json ответа api vk. Вложенность Json Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
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.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|