|
4 / 4 / 1
Регистрация: 26.12.2024
Сообщений: 225
|
||||||
WPF Как внедрить модель во viewModel?26.12.2024, 11:19. Показов 25452. Ответов 295
День добрый. Есть у меня метод в проекте, который вызывается из конструктора. Метод по типу "Получить все из бд и вывести на экран".
Смущает меня то, как именно я это делаю. Когда происходит загрузка, UI блокируется. Да и в целом все очень медленно и дальше будет только хуже с добавлением данных. Теперь код.
0
|
||||||
| 26.12.2024, 11:19 | |
|
Ответы с готовыми решениями:
295
Как зарегистрировать ViewModel через Autofac, создав между ViewModel и нужным View DataContext связь?
|
|
4 / 4 / 1
Регистрация: 26.12.2024
Сообщений: 225
|
|
| 28.12.2024, 14:36 [ТС] | |
|
0
|
|
|
|
||
| 28.12.2024, 14:42 | ||
|
Добавлено через 3 минуты Vissmuy, Иерархия проекта MVVM 1. Model - сам по себе, самый нижний слой, не знает вообще ни о чём. 2. ViewModel - знает про Model и Services. 3. Services - различные сервисы, работают сами по себе и не знают ни о ком. 4. View - знает про ViewModel и Services. 5. Application (часто совмещён с View) - знает всё про всех, соединяет всё в одну кучу с помощью DI.
0
|
||
|
4 / 4 / 1
Регистрация: 26.12.2024
Сообщений: 225
|
||
| 28.12.2024, 14:49 [ТС] | ||
|
0
|
||
|
|
|
| 28.12.2024, 14:52 | |
|
0
|
|
|
4 / 4 / 1
Регистрация: 26.12.2024
Сообщений: 225
|
||
| 28.12.2024, 15:05 [ТС] | ||
|
Добавлено через 14 секунд Если не затруднит, конечно. Добавлено через 3 минуты Я воспользовался приложением GitHub Desktop. Зашел на свой ноут, скачал Zip-архив этого проекта, распаковал и открыл решение, запустил, все так, как и должно быть. Как мне стоит сделать, чтобы было проще?
0
|
||
|
|
|
| 28.12.2024, 15:05 | |
|
0
|
|
|
4 / 4 / 1
Регистрация: 26.12.2024
Сообщений: 225
|
|||||
| 28.12.2024, 15:48 [ТС] | |||||
|
Добавлено через 26 минут Добавлено через 46 секунд Добавлено через 14 минут
0
|
|||||
|
4 / 4 / 1
Регистрация: 26.12.2024
Сообщений: 225
|
|||||||
| 28.12.2024, 16:16 [ТС] | |||||||
|
К примеру, вот строка. Формат даты = 12/28/2024
0
|
|||||||
|
4 / 4 / 1
Регистрация: 26.12.2024
Сообщений: 225
|
|
| 28.12.2024, 16:48 [ТС] | |
|
0
|
|
|
|
|
| 28.12.2024, 16:58 | |
|
Vissmuy, еще раз: DateOnly/DateTime - это типы, которые живут в системе. Изменить их содержимое ты не сможешь. А выводят их куда-либо в необходимом виде - применяя форматирование. И когда ты смотришь на эту дату в каком-нибудь TextBlock'е в нужном тебе представлении, то становится абсолютно фиолетово то, как и в чем она хранится где-то в недрах кода.
Изменять свойство на string для этого не нужно. Так или иначе, можно сказать, что все данные которые выводятся в окно - представляют из себя строковые типы, в которые их конвертирует XAML автоматически.
0
|
|
|
4 / 4 / 1
Регистрация: 26.12.2024
Сообщений: 225
|
||
| 28.12.2024, 17:13 [ТС] | ||
|
0
|
||
|
|
|||||||||||
| 28.12.2024, 17:31 | |||||||||||
|
Свойство одно:
2
|
|||||||||||
|
Модератор
|
|||
| 29.12.2024, 00:49 | |||
|
Можно задать культуру (в привязке или элементе). Можно задать кастомный стринг формат в привязке. Добавлено через 2 минуты Не понял вопроса. Для string - нет. Это же просто строка. Как строка она и выводится. Можно изменять только при создании строки. Добавлено через 4 часа 18 минут
Судя по коду в нём должно время старта приложения (точнее вызова конструктора BirdsViewModel). Но поле редактируемое. Там можно изменить дату. После нажатия кнопки эта дата записывается в BirdDeparture. И сбрасывается флаг bird.IsAlive. Вроде верно? Не пойму от чего зависит видимость кнопки. Есть привязка Visibility="{Binding Visibility}", но где свойство к которому привязка происходит?Добавлено через 2 минуты Если судить по этому сообщению Под кнопкой есть поле ввода, при нажатии данные из поля устанавливаются в свойство и кнопка исчезает. В ее функционале более нужды нет, то видимость кнопки зависит от флага IsAlive. Если false - то кнопка сворачивается.Добавлено через 7 минут TextBox тоже должен стать невидимы.Наверное и TextBlock - "чёрточка" тоже тогда не нужен.Добавлено через 1 час 10 минут Ещё есть два TextBlock перед этой кнопкой и Departure. Один с чёрточкой, второй непонятно с чем. Как их видимость должна меняться?
0
|
|||
|
4 / 4 / 1
Регистрация: 26.12.2024
Сообщений: 225
|
|||||||||||||||||
| 29.12.2024, 06:28 [ТС] | |||||||||||||||||
|
К примеру вот это я уже тут видел в свойствах с ссылкой. Где смотреть про все это?
И разве тут может быть исключение? Разве ServiceProvider не делает тоже самое, что в блоке Catch? Или это на случай, если в DI-контейнер не занести BirdsViewModel? У меня то BirdsViewModel в оригинальном коде в конструктор принимает репозиторий.
0
|
|||||||||||||||||
|
Модератор
|
|||||||||
| 29.12.2024, 11:26 | |||||||||
![]() К сожалению, вот такие вот все эти обучалки. При этом если поинтересуетесь у более-менее уже знакомого с ООП и WPF (например у wizard41 или Andrey-MSK), для него ничего удивительно и непонятного в этом коде не будет. По сути стандартные реализации для WPF. Простые реализации для тем на форуме Вопрос про команду - не понял. А что с ней непонятного? Но в Дизайнере (в режиме разработки) Code Behind не обрабатывается. Поэтому сервис не инициализирован, в Дизайнере выкидывается исключение. Можно конечно проигнорировать это, но лично мне не нравятся такие предупреждения Дизайнера, иногда из-за них он может даже отвалиться и приходится его перезапускать. Вообще, почти для всех XAML платформ есть два режима "Режим Дизайнера (или Разработки)" и "Режим Исполнения (или Рантайм)". И желательно делать такую разработку в которой нормально и правильно работают оба режима. Обратите внимание как сейчас в Дизайнере отображаются элементы. Видно их заполнение, можно переключать представления и т.д. Без обеспечения корректной работы всех типов в Режиме Дизайнера так не выйдет сделать. Добавлено через 22 минуты Я пока не спускался сильно глубоко. Просто не знаю насколько вам это нужно. Если делать правильно MVVM, то нужно изолировать Модель. В идеале у вас должен быть отдельный проект с Моделью в котором инкапсулирован, в частности, Репозиторий. Тип BirdEntity это сущность уровня репозитория. Из Модели должен выходить не он,, а немутабельная DTO-шка.Даже если упрощать Решение, так как по сути у вас только представление БД и нет другой Бизнес Логики, то всё равно функция изменения BirdEntity - это функция Репозитория. Все изменения свойств BirdEntity должны происходить через замену экземпляра. Например, метод "Delete" должен выглядеть примерно так (это не готовый код - пишу "на вскидку"):
На таком примере я уже покажу как правильно работать с БД. Добавлено через 8 минут Здесь ещё важный момент определить когда происходит сохранение изменений. В современных приложения принято, что изменения сохраняются стразу, но здесь могут ограничения, если само сохранение очень долгое. Не замораживать же GUI на это время. Можно применять асинхронность, но многие источники по сути однопоточны и асинхронность у них формальна. Фактически они просто ставят задачи в очередь и выполняют их в одном потоке. SQLite например работает на блокировке файла БД. И пока одна транзакция не завершена, другая будет висеть в ожидании. "Взрослые" БД уже работаю на блокировке записей. И разные записи можно менять независимо. Соответственно вопрос. Насколько глубоко вам нужно всем этим заморочиться, насколько критичны для вас эти моменты?
0
|
|||||||||
| 29.12.2024, 11:26 | |
|
Mvvm ViewModel в ViewModel Как внедрить БД в exe на VB 6.0 Как внедрить функцию как с внедрить свой код
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
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 имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|