|
4 / 4 / 0
Регистрация: 01.11.2013
Сообщений: 216
|
|
Как отправить данные из одного VM в другой?23.11.2022, 18:40. Показов 3114. Ответов 56
Метки нет (Все метки)
Здравствуйте!
У меня есть на Главном окне (Окно1) treeView, в нем разделы и подразделы (Компании и Отделы). При выборе Компании на форме появляется кнока, открывающая окно добавления Отдела (Окно2) (в коллекцию Отделы выбранной Компании). Окно2 и его VM ничего не знает о компании, в которую добавляется отдел. Я могу бы, например, из VM Окна2 вызвать метод модели приложения, куда бы передал созданный объект, модель бы залезла в VM Окна1 (тоже возбудила бы какое-то событие), получила бы отуда выбранную компанию и в нее сохранила бы созданный объект. Получается довольно запутанно. Это хорошая идея?
0
|
|
| 23.11.2022, 18:40 | |
|
Ответы с готовыми решениями:
56
Как отправить файл с одного пк на другой. Не получить из внешнего хранилища, а именно отправить с одного на другой Как отправить данные взятые с одного сайта на другой? Как можно отправить данные с одного сайта на другой с jQuery |
|
Модератор
|
||||||||||||||||
| 24.11.2022, 11:37 | ||||||||||||||||
|
У мутабельных свойств VM должно быть уведомление об изменении.
С учётом BaseInpc:
Должно быть приватное поле только для чтения:
0
|
||||||||||||||||
|
4 / 4 / 0
Регистрация: 01.11.2013
Сообщений: 216
|
|||
| 24.11.2022, 11:47 [ТС] | |||
|
Добавлено через 1 минуту
0
|
|||
|
Модератор
|
||||||||||||
| 24.11.2022, 12:06 | ||||||||||||
|
Добавлено через 5 минут
1
|
||||||||||||
|
Модератор
|
|||
| 24.11.2022, 12:07 | |||
|
Добавлено через 3 минуты
Файл БД нужно включить в проект в корень или какую-то вложенную папку. Указать в его свойствах "Содержание" и "Копировать ...". Тогда при сборке он будет сам автоматически закидываться в папку сборки.
0
|
|||
|
4 / 4 / 0
Регистрация: 01.11.2013
Сообщений: 216
|
|||
| 24.11.2022, 12:09 [ТС] | |||
|
Добавлено через 1 минуту Что-то я не могу найти data provider для SQLite in Visual Studio, вы не сталкивались с таким? ОЧень удобно смотреть еще и базу параллельно.
0
|
|||
|
|
||
| 24.11.2022, 12:14 | ||
|
1
|
||
|
4 / 4 / 0
Регистрация: 01.11.2013
Сообщений: 216
|
||
| 24.11.2022, 12:20 [ТС] | ||
|
Выглядит вот так:
0
|
||
|
|
|
| 24.11.2022, 12:29 | |
|
Vanka03, Вот такую компоновку делают в вашем случае - Создание простого приложения для обработки данных с помощью WPF и Entity Framework 6. Вверху данные по компании, внизу, в таблице, заказы, продажи и т.д.
1
|
|
|
4 / 4 / 0
Регистрация: 01.11.2013
Сообщений: 216
|
||
| 24.11.2022, 12:39 [ТС] | ||
|
0
|
||
|
|
||
| 24.11.2022, 12:44 | ||
Когда повторите что там написано (автоматический способ), обратите внимание на значения Margin в элементах...
0
|
||
|
Модератор
|
|||||
| 24.11.2022, 12:47 | |||||
|
Для этого нужен Code First. Чтобы не заморачиваться вопросами ADO просто образцовый начальный файл БД включите в проект, как описал выше. Добавлено через 1 минуту А для чего тогда DataGrid? Чтобы не парсить свойтва? Создайте свой UserConrrol для этого. Добавлено через 1 минуту
0
|
|||||
|
|
|
| 24.11.2022, 12:51 | |
|
Vanka03, Microsoft.Data.Sqlite -> картинка
0
|
|
|
Модератор
|
|||||
| 24.11.2022, 13:09 | |||||
|
Можно и какое-то типовое решение применить. Вот здесь есть моя реализация: https://stackoverflow.com/a/74288450/13349759 Там же в теме есть ссылка на репозиторий с исходниками. Правда, не могу сказать публичный или частный он - не я его владелец. Но суть даже не в самом Представлении. Если вам удобнее DataGrid - ради бога. Но причём здесь VM? В VM свойство всё равно должно быть для сущности, а не их коллекции. Если вам понадобилось в Представлении из сущности создать одноэлементную коллекцию, то для этого нужно было использовать конвертер. Например такой: ToArrayConverter. Добавлено через 2 минуты Добавлено через 2 минуты В сложных может несколько VM, дочерние и вложенные VM, какие-то слубы-сервисы, в View прокси, вспомогательные типы, контейнеры, оболочки, контролы и многое другое. Добавлено через 5 минут Публичное свойство один способов создания зависимости, но в данном случае неподходящий. DbContext имеет "историю". То есть его состояние зависит от того что с ним делали до этого. Например, кто-то вызвал Dispose для него. То есть для работы с ним нужно соблюдать какие-то условия безопасности. А публичным свойством может воспользоваться кто угодно и не безопасно. Лучше всего DbContext инкапсулировать в Репозитори. Но в простых решениях DbContext часто используется напрямую. Предпочтительно его инкапсулировать в основной (или единственной) VM или создавать только на один запрос (транзакцию).
1
|
|||||
|
4 / 4 / 0
Регистрация: 01.11.2013
Сообщений: 216
|
|||
| 24.11.2022, 13:13 [ТС] | |||
|
Добавлено через 2 минуты
0
|
|||
|
Модератор
|
|||
| 24.11.2022, 13:15 | |||
|
По вашему описанию, вроде, да. Сейчас запущу у себя - проверю. Добавлено через 2 минуты Как вы обезопасили если кто-то вызовет Dispose для него. Например, выполнит его в юсинге? Свойство экземпляра доступно только тем кто имеет ссылку на экземпляр. А публичный синглтон, вообще, может получить кто угодно.
0
|
|||
|
4 / 4 / 0
Регистрация: 01.11.2013
Сообщений: 216
|
||
| 24.11.2022, 13:17 [ТС] | ||
|
0
|
||
|
4 / 4 / 0
Регистрация: 01.11.2013
Сообщений: 216
|
||
| 24.11.2022, 13:19 [ТС] | ||
|
0
|
||
|
Модератор
|
|
| 24.11.2022, 13:44 | |
|
Vanka03, синхронизировал.
Образец БД задан в проекте. Если после сборки перейти в папку, удалить файл БД и запустить приложение (из проводника), то БД не будет создана. Значит Code First нет или он неверно работает. Добавлено через 1 минуту Если запускать из Студии, то Студия проверяет сборку и если нет файла, закидывает туда его из Проекта.
0
|
|
|
|
|
| 24.11.2022, 13:52 | |
|
2
|
|
|
4 / 4 / 0
Регистрация: 01.11.2013
Сообщений: 216
|
|||
| 24.11.2022, 14:05 [ТС] | |||
|
Добавлено через 1 минуту
0
|
|||
| 24.11.2022, 14:05 | |
|
Помогаю со студенческими работами здесь
40
Принять данные с одного порта, распарсить и отправить на другой порт Как отправить файл с одного компьютера на другой Как отправить сообщение с одного email-а на другой? Как отправить Post запрос с одного сервера на другой
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения
Продолжаю серию постов о дискретно-событийной модели рабочего. . .
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика
Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
|