|
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
|
|||
Приложение MVVM. Диалог добавления/редактирования товара: получение данных, вызов, взаимодействие с VM и прочее09.03.2023, 14:42. Показов 9608. Ответов 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 Использование возможностей добавления, редактирования и удаления необходимых записей в базы данных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|