|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
||||||
Предотвратить всплытие выполнения команды привязанной к MouseDoubleClick27.08.2021, 18:06. Показов 13322. Ответов 99
Добрый день, подскажите пожалуйста, как предотвратить всплытие выполнения команды по двойному клику от дочернего выделенного объекта до родительского.
Структура следующая, упростил для кратности
При двойном клике по ItemChild выполняется команда ItemChild.ShowEditDialogCommand, в которой происходит вызов модального окна предназначенного для редактирования ItemChild. По закрытию этого модального окна, происходит автоматическое открытие модального окна у родителя ItemRoot.ShowEditDialogCommand - т.е выполняется команда родителя, хотя я не кликал два раза по родителю Как предотвратить это всплытие выполнения команд ? Даже скажу так, выполняются все команды выделенных объектов, по очереди, хотя кликал я только по одному
0
|
||||||
| 27.08.2021, 18:06 | |
|
Ответы с готовыми решениями:
99
WPF команды и MVVM. Часть 2. Всплытие команд. Реализация команды для списка элементов [WPF, Элд Хасп] После выполнения определённой команды не выполняются последующие команды Как предотвратить выполнения функции в определенных случаях? |
|
Модератор
|
||
| 31.08.2021, 22:25 | ||
|
В каком-то виде её может играть класс DBHelper.Но нужно создавать его экземпляр и потом внедрять его в VM. Так же вам без изначально правильной его состыковки с БД будет очень потом его адаптировать его. В простейшем случае, лучше его просто заменить на Контекст БД из EF. Это хоть стандартный и широко известный класс. А у вас, хроме хранения данных, и нет никакой иной Бизнес Логики. Добавлено через 2 минуты UseMuse, сейчас некогда. Скиньте мне приглашение на EldHasp (автарка такая же как здесь). Будет время - внесу кое какие правки.
0
|
||
|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
|||||||
| 31.08.2021, 23:33 [ТС] | |||||||
0
|
|||||||
|
Модератор
|
|||||||||||||||||
| 01.09.2021, 10:41 | |||||||||||||||||
|
Я поэтому и писал, что у вас "кривая" базовая VM. В простейшем виде должны быть примерно такая реализация:
Примерно что-то в таком духе:
Так как Модели у вас нет, то мне трудно судить насколько он нужен в действительности. Но если он на самом деле нужен, то подобное нужно интерпретировать как "внедрение зависимости". А этим обычно занимается App (не обязательно сам класс, а его уровень). Так как View (Окно) ничего "не знает" о Модели (то есть о "настоящих" данных), то View и не может внедрять эту зависимость. Во Время Разработки не нужно внедрять зависимости (или они иные), поэтому в VM, в этом случае, надо предусматривать разные конструкторы. Именно такое решение я вам и предложил, как наименее затратное для уже имеющейся реализации.
0
|
|||||||||||||||||
|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
||
| 01.09.2021, 11:25 [ТС] | ||
|
Элд Хасп,
0
|
||
|
Модератор
|
||
| 01.09.2021, 11:55 | ||
|
А Модели у вас нет и что она отражает? То есть у вас поломана сама архитектура MVVM и поэтому трудно сказать как лучше. Поэтому, пишу ещё раз, сделайте шаг назад. Сначала создайте Модель. Если у вас только простейшее GUI к БД, то вполне будет достаточно DbContext из EF для SQLite. Потом, при необходимости, можете задать другой. Без какой-то структуры отражающей данные, мне трудно даже просто понять что там за логика, что, с чем и как в ней связано. Если трудно работать с EF, создайте какой-то XML и сериализацию для него.
1
|
||
|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
|
| 01.09.2021, 14:59 [ТС] | |
|
0
|
|
|
Модератор
|
|||||||
| 01.09.2021, 15:17 | |||||||
1
|
|||||||
|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
||
| 01.09.2021, 15:21 [ТС] | ||
|
0
|
||
|
Модератор
|
||||||||||||||||||
| 01.09.2021, 16:00 | ||||||||||||||||||
|
UseMuse, да так и есть.
Скобки в условии сравнения (внутри if) пропустил. И лишнее условие в самом if - это не критично, но "грязь в коде". Надо вместо:
Скопируйте его по новой. Добавлено через 7 минут После запуска (не важно Debug или Release) - это Режим Исполнения. Для чего это нужно. Допустим у вас в Режиме Исполнения подгружаются данные из БД. Но в Режиме Разработки эта БД "не видна" и при погрузке данных возникает исключение. Соответственно, в Конструкторе XAML вы видите предупреждение (обычно подчёркивается синей линией конструктор VM), а Окно пусто - без данных. И вам не понятно как оно будет выглядеть с данными. В таком случае по флагу режима вы вместо реальных данных из БД загружаете в VM демонстрационные Данные. Запроса к БД не происходит, исключения не возникает и вы в Конструкторе XAML видите Окно с Данными. Добавлено через 12 минут Но это нужно делать в основном проекте, а не в библиотеке. Библиотека может быть скомпилирована в Release, а проект её использующий будет скомпилирован в Debug. Добавьте в Code Behind App следующий код:
App.IsDebug во время исполнения.Хотя, честно говоря, не приходит в голову для чего это может понадобиться.
0
|
||||||||||||||||||
|
|
|
| 01.09.2021, 16:35 | |
|
0
|
|
|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
|
| 08.09.2021, 10:23 [ТС] | |
|
0
|
|
|
Модератор
|
||||||
| 11.09.2021, 14:42 | ||||||
|
UseMuse, начал рефакторинг.
Делаю небольшими шагами, чтобы вы могли отследить изменения и понять их. Поэтому смотрите не только итоговую фиксацию, но и все промежуточные. Добавлено через 4 минуты Фиксация a7bc5ae2:
Фиксация 6e08d9c4:
Фиксация ccb52685:
Фиксация 5cd4c679:
Фиксация d4897dd1:
Разберитесь с внесёнными изменениями. Отпишите что поняли и что нет. Потом продолжу.
1
|
||||||
|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
|
| 13.09.2021, 15:04 [ТС] | |
|
Элд Хасп, при редактировании корневого элемента (двойном клике), получаю ошибку
0
|
|
|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
||
| 13.09.2021, 15:56 [ТС] | ||
|
Добавлено через 24 минуты Элд Хасп, Любой объект При взятии на редактирование объекта, в диалоге редактирования, в поле Title отсутствуют данные При взятии на редактирование объекта, в диалоге редактирования, при изменении Title и нажатии отмены - отображается изменённый текст, хотя должен остаться тот который был. Корневой объект При взятии на редактирование корневого объекта, в диалоге редактирования, при изменении Title и нажатии ОК, данные не сохраняются
0
|
||
|
Модератор
|
|||||||||||
| 13.09.2021, 20:07 | |||||||||||
|
UseMuse, будет время - посмотрю.
С изменениями разобрались, всё понятно? Добавлено через 19 минут Фиксация d7220b6b:
Фиксация 759e898e:
Скопировал вашу логику, но может что-то не так сделал. Посмотрите в классе ViewModelRootEdit вот эти строки:
Добавлено через 12 минут Фиксация bd53c398:
0
|
|||||||||||
|
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,329
|
||
| 13.09.2021, 23:27 [ТС] | ||
|
Добавлено через 12 минут Элд Хасп, при сохранении изменённых дочерних данных и вызова метода синхронизации обновления данных на сервере, добавил случайное выбрасывание ошибки, в тот момент ,когда возможна ошибка, диалог редактирования данных не должен закрываться, а должен оставаться открытым, при возникновении ошибки - в этом диалоге просто пишится о том, что произошла ошибка. Диалог редактирование нужна закрывать только при успешном обновлении или при отмене. Ожидаемое поведение: как при редактировании корневого - при ошибке диалог не закрывается, в диалоге выводится ошибка. Добавил обновлений в проект
0
|
||
| 13.09.2021, 23:27 | |
|
Вывести результат выполнения команды HELP в текстовый файл так, чтобы у каждой команды был порядковый номер Как предотвратить зависание приложения во время коннекта и выполнения запроса в БД
Написать команды выполнения Ограничение выполнения команды Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
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 и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|