|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
||||||
Предотвратить всплытие выполнения команды привязанной к MouseDoubleClick27.08.2021, 18:06. Показов 13363. Ответов 99
Добрый день, подскажите пожалуйста, как предотвратить всплытие выполнения команды по двойному клику от дочернего выделенного объекта до родительского.
Структура следующая, упростил для кратности
При двойном клике по ItemChild выполняется команда ItemChild.ShowEditDialogCommand, в которой происходит вызов модального окна предназначенного для редактирования ItemChild. По закрытию этого модального окна, происходит автоматическое открытие модального окна у родителя ItemRoot.ShowEditDialogCommand - т.е выполняется команда родителя, хотя я не кликал два раза по родителю Как предотвратить это всплытие выполнения команд ? Даже скажу так, выполняются все команды выделенных объектов, по очереди, хотя кликал я только по одному
0
|
||||||
| 27.08.2021, 18:06 | |
|
Ответы с готовыми решениями:
99
WPF команды и MVVM. Часть 2. Всплытие команд. Реализация команды для списка элементов [WPF, Элд Хасп] После выполнения определённой команды не выполняются последующие команды Как предотвратить выполнения функции в определенных случаях? |
|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
|
| 14.09.2021, 09:23 [ТС] | |
|
Элд Хасп, комментарий мой предпоследний касается последних фиксаций
0
|
|
|
Модератор
|
|||||||
| 14.09.2021, 18:42 | |||||||
|
Вообще, DBHelper очень коряво смотрится в качестве Модели.data - это сущность отражающая данные Модели.И у VM нет полномочий на её самостоятельное изменение. Допустим, нельзя делать data.Title = Title.Для изменения данных вы должны обратиться к Модели. Модель производит соответствующие манипуляции и если они успешны, то возвращает сущность отражающую изменённые данные. Например, вот этот тип DataModelChild лучше сделать иммутабельна DTO.И примерено такое его использование в VM:
1
|
|||||||
|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
|||
| 14.09.2021, 21:10 [ТС] | |||
|
0
|
|||
|
Модератор
|
|||
| 14.09.2021, 21:15 | |||
|
Но их нужно сделать ИММУТАБЕЛЬНЫМИ. Тогда вы сами себя перестанете путать с просачиванием несвойственного функционала.
0
|
|||
|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
|
| 14.09.2021, 21:20 [ТС] | |
|
0
|
|
|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
||
| 15.09.2021, 09:51 [ТС] | ||
|
Элд Хасп, мне не ясен момент с тем, где располагать команды. Я могу их все расопложить в ViewModelMain, а могу оставить как есть, как понять где их распологать? По контексту расположения на экране. Или по логике отношения к объекту внутри ViewModel?
Добавлено через 29 минут
0
|
||
|
Модератор
|
|||
| 15.09.2021, 10:26 | |||
|
В данный у вас для редактирования создаются отдельные независимые Окна. Поэтому команды должны быть в их Контексте Данных (ViewModel). Привязаться к Контексту Данных другого (основного) Окна вы просто не сможете. НО! Что такое эти ваши дополнительные Окна? Это Диалоги. А Диалог не должен сам производить каких-то действий с Данными. Он должен только вернуть какое действие нужно совершить. И если сделать в такой (более верной) концепции, то в диалоге просто не будут нужны команды. Чтобы пояснить смысл объясняемого и не вносить больших изменений в текущий код. Для нормальной реализации понадобятся архитектурные изменения. А это повлечёт очень значительные изменения во многих типах. Добавлено через 3 минуты С публичным методом, создание экземпляра VM и передача ему данных - это отдельные операции. Что позволяет (в том числе) использовать одни и те же экземпляры VM и View для редактирования разных данных. Если такое, конечно, нужно.
0
|
|||
|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
|
| 15.09.2021, 12:06 [ТС] | |
|
Элд Хасп, был бы весьма благодерн, если бы получилось бы мой проект привести к примерному
0
|
|
|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
|
| 15.09.2021, 12:58 [ТС] | |
|
0
|
|
|
Модератор
|
||
| 15.09.2021, 13:04 | ||
|
В этой ветке, в первую очередь, реализуйте класс Модели и классы иммутабельных DTO для неё. Какие нужны члены для Модели: 1) Метод возвращающий все корневые элементы; 2) Метод возвращающий все дочерние элементы; 3) Метод возвращающий все дочерние элементы по Id родительского элемента; 4) Метод возвращающий корневой по его Id; 5) Метод возвращающий дочерний по его Id; 6) Метод изменяющий корневой элемент по его Id и др. параметрам и возвращающий новый корневой элемент; 7) Метод изменяющий дочерний элемент по его Id и др. параметрам и возвращающий новый дочерний элемент. Как реализуете - напишите. Я посмотрю.
0
|
||
|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
|
| 15.09.2021, 13:29 [ТС] | |
|
0
|
|
|
Модератор
|
||
| 15.09.2021, 14:10 | ||
|
Я предпочитаю делать классы, так как для иммутабельных можно закрыть конструктор по умолчанию. Но это не принципиально (насколько вижу) - поэтому на ваше усмотрение.
0
|
||
|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
||
| 15.09.2021, 14:27 [ТС] | ||
|
0
|
||
|
Модератор
|
||
| 15.09.2021, 14:42 | ||
|
Есть задачи в которых структуры сложнее использовать. И мне (для себя) проще каждый раз делать классы, чем выбирать для каждой задачи как лучше и потом путаться при использовании. В данной задаче это абсолютно безразлично. Делайте как вам удобнее. Добавлено через 3 минуты Мне, кажется, намного нагляднее, если у свойства не будет сеттера, чем помнить, что это структура и хоть есть сеттер он не изменяет значение данных в самом источнике. Там где проще применить DTO структуру, в современном Шарпе, лучше использовать кортежи. Они проще, понятнее, прозрачнее. Добавлено через 1 минуту В данной задаче, вы тоже можете применить кортежи. Никакой функциональной нагрузки ваши DTO не несут. Так что это только облегчит Решение.
0
|
||
|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
|||
| 15.09.2021, 14:43 [ТС] | |||
|
0
|
|||
|
Модератор
|
||
| 15.09.2021, 14:45 | ||
|
В ней будут использоваться Диалоги. А для Диалогов команды не будут нужны. А без введения Диалогов избавиться от команд не получится.
0
|
||
|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
|
| 15.09.2021, 14:55 [ТС] | |
|
0
|
|
| 15.09.2021, 14:55 | |
|
Вывести результат выполнения команды HELP в текстовый файл так, чтобы у каждой команды был порядковый номер Как предотвратить зависание приложения во время коннекта и выполнения запроса в БД
Написать команды выполнения Ограничение выполнения команды Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
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 и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|