90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
MVVM postgres17.06.2020, 10:41. Показов 13765. Ответов 200
Метки нет (Все метки)
учу mvvm
появилось много вопросов я создал модель Кликните здесь для просмотра всего текста
создал сервис , который должен заполнять данными я это сделал так Кликните здесь для просмотра всего текста
после чего в основном классе Кликните здесь для просмотра всего текста
и тут первый вопрос. можно это сделать без циклов ? например сразу конвертировать в BindingList и как вообще правильно заполнять данными из бд? дальше я показываю таблицу в view Кликните здесь для просмотра всего текста
и снова вопрос. мне нужно добавлять данные в BindingList и при событии добавления/удаления/изменения делать изменения в бд? Или просто делать запросы в бд update/insert и после этого заново заполнять данными? второе звучит проще и логичней для меня.
0
|
17.06.2020, 10:41 | |
Ответы с готовыми решениями:
200
Mvvm x:Name в MVVM MVVM MVVM |
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
|
|
03.04.2021, 09:01 [ТС] | 141 |
Как с помощью только view реализовать смену uc? Мне в голову приходит только 1 uc к примеру currentUС , в которой из основной vm передаётся uc которая нужна в данный момент.
0
|
Модератор
|
|
03.04.2021, 09:02 | 142 |
onimor, разберитесь сначала почему у вас ошибка БД не подымается по стеку.
После чего я бы вам посоветовал изменить структуру приложения для лучшего понимания разделения функционала слоёв. Так будет несколько больше кода, но зато вы поймёте зоны ответственности каждого слоя.
1
|
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
|
|
03.04.2021, 09:03 [ТС] | 143 |
0
|
Модератор
|
|
03.04.2021, 09:09 | 144 |
В самом простом случае:
- свойство VM имеет базовый тип. В том числе возможно и object; - VM записывает в него экземпляры разных производных типов; - в View для каждого производного типа задан шаблон данных по умолчанию. В том числе может использоваться UserControl. - для представления свойства в Региона окна используется ContentPresenter или ContentControl: - к свойству VM привязан Content Региона. На этом всё. Если явно не задаётся ContentTemplate, то для каждого типа будет использоваться свой Шаблон Данных по умолчанию. Добавлено через 1 минуту onimor, по схеме выше. Каждый блок - это отдельный проект. Стрелка - это ссылка (или зависимость) из одного проекта на другой.
1
|
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
|
|
03.04.2021, 09:23 [ТС] | 145 |
0
|
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
|
|
03.04.2021, 09:24 [ТС] | 146 |
0
|
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
|
|
03.04.2021, 09:31 [ТС] | 147 |
P.S. сброс настроек не помог
0
|
Модератор
|
||||||
03.04.2021, 09:50 | 148 | |||||
onimor, а где входная страница?
Из этой схемы просматривается следующее: 1) Регион Окна имеет два разных представлений: для показа поста и для показа настроек; 2) Смена выбранного поста изменяет привязку UC для камер постов, но сам UC остаётся прежним; 3) В меню управления (левый регион) разделено выбор постов и настройки; 4) Реализация левого региона по сути тоже состоит из двух отдельных Регионов: списочный элемент для выбора поста и снизу кнопки для других режимов; 5) Контролы для показа поста и настроек, совершенно, никак не связаны друг с другом. Мои выводы (без учёта пункта "Показать Журнал"): 1) Управляющие функции навигатора находятся в левом регионе; 2) Управление навигацией не связанно с изменением данных; 3) Так как это не имеет отношения к данным, то реализовываться должно в View, а не в VM. Примерный псевдокод:
1) Изначально Content = null: 2) В параметр команды передаётся нужный контент для переключения: SettingsVM, выбранный пост и др. 3) По команде проверяется параметр, если это допустимый Контент, то он записывается в Content; 4) При выборе поста (изменении SelectedPost) вызывается команда с этим постом; 5) В окне в регионе у контрола (ContentPresenter или ContentControl) в ресурсах заданы Шаблоны Данных по умолчанию для настроек и поста; 6) Свойство Content привязано к свойству Content навигатора.
1
|
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
|
|
03.04.2021, 09:53 [ТС] | 149 |
0
|
Модератор
|
|
03.04.2021, 09:54 | 150 |
Я тогда не знаю что делать.
Видео, что у меня работает это Решение - я показал. Различия у нас только в самой Студии. Может настройки, может баг какой-то, может ещё что - я не знаю с чем это может быть связано. В тестовом решении (где я сделал вывод ошибки в окно) у вас тоже прерывается выполнение программы и до вывода текста ошибки исполнение не доходит? Добавлено через 37 секунд Но он в этом же окне? Или у него своё окно?
0
|
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
|
|
03.04.2021, 10:01 [ТС] | 151 |
да.
в главном окне Добавлено через 5 минут В контроле "Параметры" помимо всего можно настроить каждый пост . Какие там будут камеры , с какого ip брать данные и прочее. Если будет изменен текущий пост. То нужно будет изменить привязку.
0
|
Модератор
|
|
03.04.2021, 10:02 | 152 |
onimor, если у вас есть изменения в Решении - сделайте фиксацию.
Я подготовлю тестовый проект для вопроса в разделе ADO-БД. Добавлено через 50 секунд Эти настройки должны идти через Модель. Непосредственно друг с другом они не связаны.
0
|
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
|
|
03.04.2021, 10:05 [ТС] | 153 |
Нету. Но лучше наверное сделать ответвление
Добавлено через 1 минуту Да. Я забыл что при выборе поста все время обновляются привязки
0
|
Модератор
|
|
03.04.2021, 10:08 | 154 |
Тестовое Решение будет отдельно, хотя и в этом репозитории.
Оно не будет влиять на основное Решение. Необходимости в отдельной ветке не вижу. Добавлено через 20 секунд Но если хотите - создайте. Как закончите - сообщите.
0
|
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
|
|
03.04.2021, 10:13 [ТС] | 155 |
Сегодня я вряд ли дойду до ПК с VS. Делайте как удобно. В любом случае можно будет откатиться
0
|
Модератор
|
|
03.04.2021, 10:43 | 156 |
Скинул фиксации.
После синхронизации запустите тестовое Решение, нажмите кнопку "Загрузить" и должно выйти вот такое окно: Если не выйдет - создайте тему в разделе ADO-БД с вопросом почему исключение не подымается. И дайте ссылку на тестовое Решение и его архив.
1
|
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
|
|
03.04.2021, 16:39 [ТС] | 157 |
Элд Хасп, постараюсь вечером проверить
Добавлено через 5 часов 23 минуты Не выходит, крашится. Позже создам. Пока это не настолько важно. Если запустить приложение из папки, без студии, то ловится.
0
|
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
|
||||||
07.04.2021, 15:34 [ТС] | 159 | |||||
Кажется я снова не так что-то понял
0
|
Модератор
|
|
07.04.2021, 15:45 | 160 |
Это же ШАБЛОН данных.
При смене самих данных (переключении) к ним применяется наиболее подходящий шаблон. При применении шаблона все UI элементы его фабрики создаются заново. А вы какое хотели получить поведение?
1
|
07.04.2021, 15:45 | |
07.04.2021, 15:45 | |
Помогаю со студенческими работами здесь
160
Model в MVVM Mvvm datagrid ef WPF MVVM MVVM патерн ProgressBar в MVVM Использование mvvm Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |