|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
|||
Приложение MVVM. Диалог добавления/редактирования товара: получение данных, вызов, взаимодействие с VM и прочее09.03.2023, 14:42. Показов 9334. Ответов 207
Метки нет (Все метки)
Добавлено через 3 минуты Меня интересует маппер. Он инициализирует свойства составного типа такие как Manufacturer?
0
|
|||
| 09.03.2023, 14:42 | |
|
Ответы с готовыми решениями:
207
Приложение MVVM. Контекстное меню (удаление, редактирование) для элемента (Товара) в ListBox Взаимодействие баз данных с MVVM
|
|
Модератор
|
||
| 17.03.2023, 22:01 | ||
|
И логически вы ещё неверно делаете возлагая функции БЛ на View. Вот ответьте на вопрос, что будет, если сделать другую реализацию View в которой будет игнорироваться Role и вызываться любые методы редактирования для гостя? Добавлено через 2 минуты Вот такая аналогия. В отеле много номеров, у каждого свой ключ. Гость может своим ключом открыть только свою дверь. Всё понятно, логично. Вы же строите - все двери без ключей и каждому гостю сообщается в какие номера он не может заходить.
0
|
||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
|||
| 17.03.2023, 22:28 [ТС] | |||
|
Я просто не хочу прогонять каждый элемент через триггер или конвертер, ни к чему вообще делать эту лишнюю работу. И предпочитаю удалить элемент, а не скрыть, потому что при скрытии он все равно остается в памяти и тратит ресурсы. Незачем это. Через xaml я не могу удалить, поэтому приходится подключать код. И для перехода к диалогу мы ставили кликеры, я их как-то не захотел переписывать на команды Добавлено через 3 минуты И фиксацию отправил, можете посмотреть при желании
0
|
|||
|
Модератор
|
|||||||||||||||||||
| 17.03.2023, 23:10 | |||||||||||||||||||
|
Добавлено через 35 секунд Добавлено через 3 минуты int RoleId.IRole Role - это опциональное поле. Может быть или не быть.Добавлено через 15 минут INexteR, я вам пишу о том, что сначала в Модели нужно реализовать:
И так же во всех остальных методах изменения. Добавлено через 16 минут А в VM создать зависимость состояния команд от прав:
0
|
|||||||||||||||||||
|
Модератор
|
|
| 18.03.2023, 08:55 | |
|
INexteR, реализация, что я показал, это только демонстрация в какую сторону нужно её развивать.
Попробуйте сами проанализировать её отличие от вашей в View, дать им оценку. И подумать какие есть в ней концептуальные проблемы и как дальше её следует развить.
0
|
|
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
||||||||||||
| 18.03.2023, 13:05 [ТС] | ||||||||||||
|
Доброе утро
И погодите, здесь Вы пишете про саму команду добавления. Но ведь меня озадачивают пункты, которые только открывают диалог с этой командой. То есть сами по себе они не выполняют это действие за исключением пункта удаления Добавлено через 6 минут И ещё вопрос, по заданию сказано ввести ограничение по пикселям для изображения. Какой слой должен выполнять проверку? Добавлено через 3 часа 17 минут То есть разметка у меню следующая, здесь нет установки команд, так как пункты являются посредниками
И да, я добавил в модель методы и для самих команд CanExecuteHandler. Решил далее в ViewsHelper написать такой Loaded обработчик
0
|
||||||||||||
|
Модератор
|
||||
| 18.03.2023, 13:06 | ||||
|
Это отдельная задача. Может решать через BitMap или BitmapImage (DecodePixel). Пока не было времени. Сегодня тоже по работе занят. Добавлено через 1 минуту Я и пытаюсь вас подтолкнуть к мысли, что вы строите логику "от View", а нужно строить "от Модели".
0
|
||||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
||
| 18.03.2023, 13:10 [ТС] | ||
|
0
|
||
|
Модератор
|
||||
| 18.03.2023, 13:16 | ||||
|
Вот возьмите более реалистичный пример, когда есть десяток разных ролей, групп ролей, несколько десятков их прав.
Вы собираетесь всё это обрабатывать в View? View только представляет данные. Если доступ для какого-то метода для какой-то роли запрещён, то это должна запрещать Модель. И в WPF в типичный механиpv для этого - это команды. Как сделать чтобы пункты меняю или кнопки с запрещёнными командами не показывались - вот это задача View. Но для начала нужны сами эти команды. А так как будут использоваться команды, то с высокой вероятностью реализация через кликеры будет неподходящей. Добавлено через 1 минуту И вызовов этих методов должен происходить после событии изменения авторизации о чём нужно указать в интерфейсе IShop. Добавлено через 1 минуту И вызывать ревалидацию команды при изменении авторизации. Добавлено через 2 минуты
0
|
||||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
||||
| 18.03.2023, 13:22 [ТС] | ||||
|
Добавлено через 1 минуту
0
|
||||
|
Модератор
|
|||
| 18.03.2023, 14:33 | |||
|
В WPF на этом экономить бессмысленно. Там создаются постоянно сотни и тысячи элементов. Из-за пары элементов контекстного меню ничего не изменится. Это как сэкономить доллар при покупке мерседеса. Добавлено через 3 минуты Другой - оставить кликеры, но дополнительно прокидывать зависимость от состояния команды. Мне кажется на командах получится проще.
0
|
|||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
||||||
| 18.03.2023, 14:55 [ТС] | ||||||
|
Элд Хасп, добавил в модель и VM по три свойства
Вы понимаете в чем проблема? В том что нет смысла ставить на основные команды состояние. Его нужно определять предшествующим команде элементам, открывающим диалог Добавлено через 9 минут И в то же время, даже если делать основной команде состояние и псевдокоманде его "похищать", далее скрывать эти элементы в контекстном меню, то в случае гостя оно останется пустым, но при этом продолжит появляться. Короче, я уже не знаю, как иначе можно сделать, но если вам мой данный подход не нравится, переделайте, а я посмотрю. Отправил ещё одну фиксацию
0
|
||||||
|
Модератор
|
|||
| 18.03.2023, 15:33 | |||
|
Или выводить тип предупреждения "У вас не хватает прав для редактирования"? Добавлено через 34 секунды
0
|
|||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
|
| 18.03.2023, 16:32 [ТС] | |
|
0
|
|
|
Модератор
|
||
| 18.03.2023, 17:34 | ||
|
Например, админ зашёл под гостевым для каких-то нужд. Чё-то там делает, увидел что нужно внести исправление, ПКМ - и ничего. "Не работает! Чё за фигня и т.п.", а то что под другим логином зашёл = забыл.
0
|
||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
||||||||||||||||||
| 18.03.2023, 23:29 [ТС] | ||||||||||||||||||
|
Добавлено через 26 минут Добавлено через 5 часов 4 минуты Элд Хасп, возможно, что ранее Вы имели в виду такую реализацию:
То есть, как я понял вас, эти промежуточные команды должны заимствовать состояние основных команд. Но, допустим, сверху есть кнопка добавления, если её состояние определять таким же образом, то она всегда будет отключена. Причина в том, что у контекстного меню есть контекст данных - определенный товар, он передается в CanExecute, хотя он в этом методе не используется, но его туда передать нужно, так как ваша реализация команды для CanExecute выглядит так
Лично мне эта реализация не нравится. Как по мне, здесь вышло больше кода. Также тут при входе за гостя контекстное меню продолжает появляться в виде маленького прямоугольника, в котором все пункты скрыты
0
|
||||||||||||||||||
|
Модератор
|
|||
| 18.03.2023, 23:39 | |||
|
INexteR, да....
Скинул реализацию сквозной проверки доступа к методам. Но вот удаление пустого ContextMenu оказалось не тривиальной задачей. Моя идея была в скрытии меню по оценке количества пунктов в нём. Но вот оказалось, что скрывать его надо ещё до того как пункты оценят свою видимость.... Какие только "танцы вокруг костра" не плясал - красивого варианта реализации создать не удалось. Или дублирование, или создание на Шарпе. Добавлено через 42 секунды Добавлено через 1 минуту
0
|
|||
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
|
| 18.03.2023, 23:55 [ТС] | |
|
Элд Хасп, я думаю, что вашу функциональность команд можно разнообразить. Т. е. создать варианты, где параметры у Execute и CanExecute будут разного типа. Или Execute с каким-то параметром, а CanExecute вообще без него. И наоборот. Все это для большей гибкости. А то вот в возникшей ситуации пришлось что-то выдумывать
0
|
|
|
Модератор
|
||
| 19.03.2023, 00:10 | ||
|
Можно сделать, но использоваться будут они редко. Даже с типизированным параметром команды далеко не все используют.
0
|
||
|
Модератор
|
|
| 19.03.2023, 13:00 | |
|
INexteR, отладил реализацию.
Но сразу пишу - она тоже мне самому не очень нравится. Но сделать какую-то проверку пунктов меню до вызова самого меню мне не пришло в голову как. Поэтому получается дублирование: пункты задаются в XAML, а их имена надо повторить и проверить в конвертере на Шарпе. Если они не будут друг другу соответствовать, то возможны баги. Можно переместить создание меню в Шарп (но один экземпляр на весь сеанс приложения), можно вместо конвертера использовать мультиконвертер в который передаётся меню и имена пунктов извлекаются из него. Но не один из этих вариантов не скажу что нравится мне. Наверное вариант с мультибиндингом всё же будет предпочтительней.
0
|
|
|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
|
| 19.03.2023, 16:08 [ТС] | |
|
Элд Хасп, ясно, спасибо за проделанные усилия
Добавлено через 45 минут Элд Хасп, тогда... этот проект можно считать завершенным? По заданию не была сделана только captcha
0
|
|
| 19.03.2023, 16:08 | |
|
Создание базы данных с функциями ввода, вывода, редактирования, удаления или добавления данных Формы редактирования, добавления данных Форма для добавления, редактирования, удаления данных Пример добавления, удаления и редактирования данных в БД *.mbd Использование возможностей добавления, редактирования и удаления необходимых записей в базы данных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
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 реально казались вершиной жары, когда можно было весь день пропадать на. . .
|