|
0 / 0 / 0
Регистрация: 03.09.2022
Сообщений: 69
|
||
Некоторые вопросы по паттерну MVVM15.10.2023, 21:20. Показов 409. Ответов 8
Метки нет (Все метки)
Да, поэтому и написал, что говнокод, ибо не у кого спросить многие вещи помимо форума... По задумке, это огромный pet-проект с целью поработать с многими библиотеками, WPF, ASP.Net и прочее... Ибо по-другому не научиться что-то делать Можете ответить на некоторые вопросы по паттерну MVVM? Я понимаю, что Вы отправите к собственному примеру, который на форуме, но всё же на чём-то своём более понятно. Можете посмотреть общую логику? 1) У меня в проекте многое реализовано через события, что уже не очень хорошо, многие вещи переделаются через Binding после оформления интерфейса и отправятся в VievModel (там будут свойства, которые свяжут модель представление) -> Model. 2) Если останутся события, куда их нужно деть? В модель? Тогда возникнут трудности с манипуляцией того же dataGrid. Получается событие поместить в ViewModel. Оттуда вызывать метод, который обращается к Model. 3) Ячейки, которые сгенерируются в коде, отправятся в View. Но мне нужно будет сделать их "полосатыми". То есть менять какие-то внутренние свойства представления. Это сгенерировать в ViewModel? 4) Что должно находится в Main.xaml.cs?
0
|
||
| 15.10.2023, 21:20 | |
|
Ответы с готовыми решениями:
8
Некоторые вопросы Некоторые вопросы по проге |
|
0 / 0 / 0
Регистрация: 03.09.2022
Сообщений: 69
|
|
| 15.10.2023, 21:42 [ТС] | |
|
Элд Хасп, блин... Проще pet-проекта в голову не приходит... Даже для backend... А на реальный проект, с моим не особо большим практическим опытом, вряд ли попаду. Создать тему?
0
|
|
|
Модератор
|
|||||||||||||
| 15.10.2023, 22:05 | |||||||||||||
|
Весь смысл паттернов архитектура приложения - это создать простую, удобную, легко читаемую архитектуру. В паттернах MV* основная часть приложения - это МОДЕЛЬ.А у вас её нет, в принципе. Для начала создайте Модель в ОТДЕЛЬНОМ проекте. Лучше всего типа "Библиотека классов Standard". Но вам нужно работать с SQLite - не знаю Standard поддерживает или нет. Если Standard не получится - то "Библиотека классов .Net6". Без наличия отлаженной Модели нет никакого смысла приступать к View. Модель - это основной слой приложения в котором находится вся Бизнес (Доменная) логика. ViewModel - это не "замена Code Behind View". Единственная функция ViewModel - это отражение Модели в удобном для View виде. Для WPF "удобный вид" - это отражение через свойства. Но всё индивидуально. Вполне могут быть задачи, которые через привязки не решить. Из VM поступают просто контейнеры с данными (Сущности, DTO и т.п.) А как их отобразить - это задача View.
У вас ещё нет даже начальной архитектуры. Нет Модели. А вылезете в какие-то тонкие нюансы настройки такого сложного элемента как DataGrid. Сначала реализуйте саму логику приложения, создайте рабочую версию. А украшательствами займётесь потом.
0
|
|||||||||||||
|
0 / 0 / 0
Регистрация: 03.09.2022
Сообщений: 69
|
|||
| 15.10.2023, 22:11 [ТС] | |||
|
Элд Хасп, то, что дремучий лес, я понял. Обдумываю пока архитектуру, чтоб по 500 раз не переписывать и не путаться... Кажется, стало понятнее.
Model = содержится вся бизнес логика, шагаем от неё ViewModel = преимущественно содержит только свойства, которые Binding с View View = xaml разметка, оно понятно. 2) Если я организую всё как мне покажется нужно, сможете кратко откомментировать со стороны архитектуры?
0
|
|||
|
Модератор
|
||||
| 15.10.2023, 22:18 | ||||
|
Вот у меня в Модели есть такие-то данные, для пользователя нужно одновременно видеть в объекте то-то и то-то. Значит мне нужно в VM создать тип который объединит таки-то данные Модели. В большинстве задач, даже создавать типы в VM не нужно. Хватает типов которые поставляет Модель. Но по времени - не могу сказать. В будни очень занят. Только какие-то коротки комментарии. Структура WPF решения Структура связей в WPF Решении Структура WPF+БД решения Потоки в асинхронном MVVM
0
|
||||
|
0 / 0 / 0
Регистрация: 03.09.2022
Сообщений: 69
|
|
| 15.10.2023, 22:20 [ТС] | |
|
0
|
|
|
Модератор
|
||
| 15.10.2023, 22:38 | ||
|
ViewModel в идеале это прокси отражающий Модель. Очень часто из VM пытаются сделать некоего "заместителя Code Behind". Например, вы интересовались "можно ли раскрасить ячейки в VM?". Имеет ли какое-то отношение раскраска ячейки к состоянию Модели? Нет, не имеет. Следовательно - это не функция ViewModel. И неважно реализуется эта раскраска через свойства, методы или ещё каким-то образом. View - это не только XAML. В нормальном приложении, с нормальным развитым GUI в View будет "море" Шарпа. XAML - это как бы "венец" WPF. Но это декларативный язык. Он не может создавать новые методы, типы. Поэтому вся инфраструктура создаётся на Шарпе: конвертера, селекторы, прокси, Custom Control и многое другое. А в XAML потом они используются в создании компоновки.
1
|
||
|
0 / 0 / 0
Регистрация: 03.09.2022
Сообщений: 69
|
|||
| 15.10.2023, 22:40 [ТС] | |||
|
0
|
|||
|
Модератор
|
|||
| 15.10.2023, 23:09 | |||
|
Потребители Модели (в том числе VM) по этим событиям актуализируют своё состояние.
0
|
|||
| 15.10.2023, 23:09 | |
|
Помогаю со студенческими работами здесь
9
Некоторые вопросы по flowLayoutPanel Некоторые вопросы по ucoz'у Некоторые вопросы по железу Некоторые вопросы по синтаксису ASUS G55v некоторые вопросы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|