|
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
|
||||||
WPF Модальное Окно для выбора операции с файлами без зависаний при выполнении цикла30.03.2021, 15:31. Показов 4956. Ответов 61
Метки нет (Все метки)
Здравствуйте.
К слову и весь вопрос. Как можно передать окну которое будет находятся в другом потоке главное окно. Окно будет запускать через отдельный класс который и будет создавать второстепенное окно в другом потоке. Хотя вот функция которая вызывает окно:
Хотя не знаю как сделать грамотно. Само окно подразумивает выбор файлов и выбор операции что с ними делать. Но сама функция System.IO.Directory.GetFiles и ForEach может продлится весьма долгое время а это не должно приводить к зависанию программы. С другой стороны это окно модальное а значит когда оно отобразится переключатся на главное должно быть невозможным что уже говорит о том что модальное окно должно быть в потоке где и главное окно. Подскажите как быть?
0
|
||||||
| 30.03.2021, 15:31 | |
|
Ответы с готовыми решениями:
61
Длительные операции без зависаний
Модальное окно Query с кнопками выбора |
|
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
|
||||||||||||||||||
| 06.04.2021, 09:16 [ТС] | ||||||||||||||||||
|
К томуже не могу прекрутить
В данном случае saveFiles находится здесь. Как уже сказал что файлы изначально неизвостно и их получение происходит в коде через вызов LoadSetting Запускается цепочка событий которая в зависимости от результата приведет к созданиюсписка или закрытию программы. Добавлено через 4 минуты Это работает если выставить в Mode OneWayToSource но как уже сказал работает все это дело не удобно. Нужно чтобы при выделении элемента галочка автоматически не выбиралась а выбиралась примерно также как в WinForms либо по нажатию на саму галку либо при двойном нажатии по Item'у Добавлено через 3 минуты К томуже при OneWayToSource если галочку снимать то элемент не выделяется. Галдочки не должны быть связаны с выделением Item'а от слова совсем.
0
|
||||||||||||||||||
|
Модератор
|
|||||||||
| 06.04.2021, 10:11 | |||||||||
|
Добавлено через 2 минуты В моём примере конвертер находится в пространстве SelectFilesDialog.У вас local: указывает на пространство Eador_M_of_the_B_W_Launcher.Вы поменяли в конвертере? Добавлено через 3 минуты WPF плохо работает с ними. Только если надо получить статическое, немутабельное значение. Как в моём конвертере статическое свойство с экземпляром:
Следовательно для элемента коллекции, нужен тип с дополнительным свойством для этой галочки. Делать это всё без нормальной ViewModel - будет большая дурно пахнущая куча.
0
|
|||||||||
|
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
|
||||
| 06.04.2021, 10:34 [ТС] | ||||
|
Я так пологаю FileInfoToNameConverter это отдельная свойство и нужно пилить свой класс наследника от FileInfo? Повторяю мне нужна добится аналогии с CheckedListBox'ом из WinForms. Но со своим счтилем и количество элементов в списке зависит от количества файлов в списке а контент имя файцла юбез его расширения.
0
|
||||
|
Модератор
|
|||||||||||
| 06.04.2021, 13:56 | |||||||||||
|
Это ваше виденье реализации и оно для WPF неверно. CheckBox - это UI элемент. И его задача ПРЕДСТАВЛЯТЬ данные, а не быть источником данных. Если вам нужен какой-то признак выбора элемента коллекции, то это и должно быть реализовано на уровне элемента коллекции, а не на уровне его отображения. В WPF логическое дерево, визуальное дерево, наследование Контекста Данных очень сильно отличаются друг от друга. И, в принципе, можно в шаблоне данных для string задать CheckBox, но вот потом "добраться до него" чтобы определить какой из них выбран - задача весьма нетривиальная. И вам она точно не по плечу. Да и не нужно это в вашей задаче, только лишнее усложнение там где ему нет места. Добавлено через 4 минуты Ещё раз пишу: WPF очень плохо работает со статическими классами. Туже привязку задать к нему - далеко не так просто. Так же в отношении вашей реализации этого класса: в современном Шарпе не используются Публичные поля. В редких случаях допускается использовать публичные поля ТОЛЬКО ДЛЯ ЧТЕНИЯ. Добавлено через 4 минуты Или внесли в него изменения под ваш проект? Для вашего проекта в локальном пространстве должно быть так:
И после внесения изменений в Шарп код, проект надо обязательно СОБИРАТЬ! XAML Дизайнер берёт информацию из СБОРКИ, а не из проекта. Добавлено через 1 минуту А можете решать задачу, а не выдумывать себе искусственные сложности.
0
|
|||||||||||
|
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
|
|||
| 06.04.2021, 16:26 [ТС] | |||
|
Выделенная строка это и есть нужный элемент. Если его указать через XAML то в итоге список пустой. Если указать через код. Список не пустой. И как уже посмотрел нет возможности получить у FileInfo файл без расширение. Чтобы получить прийдется добавлять класс наследник и писать свойство получения имени файла но в принципе не сильно сложно. Ваш код я не реализовал так как там черти что а не то что мне нужно. И повторюсь. Мне нужно чтобы выбирания элемента в списке вообще не как не влияло на выбор галочку так как ЭТО НЕУДОБНО.
0
|
|||
|
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
|
|
| 06.04.2021, 17:09 [ТС] | |
|
Блин. WPF какойто звиздец. На кой хрен было делать чтобы выдиление CheckedBox в списке обязательнео ставил галочку. И на оборот если ты убераешь галочку то элемент не выделяется. Мне объеденить нужен список CheckBoxjd а это какойто аналог списка радиокнопок получается вот что совсем не нужно
Добавлено через 25 минут Понял почему не работает. Выбор выделение назначен на правую кнопку мыши что нужно перенаправить на левую кнопку мыши. Добавлено через 4 минуты Короче думаю найдутся люди которые знают как список в wpf Сделать аналогичным списку CheckedListBox из WinForms Добавлено через 9 минут И еще раз повторяю что выделятся строка в списке должна только одна так что свойство SelectionMode="Multiple" уже отпадает при этом сам список должен быть списком CheckBox'ов а не списком радиокнопок в стилистике CheckBox'ов
0
|
|
|
1596 / 601 / 185
Регистрация: 05.12.2015
Сообщений: 970
|
|||||||
| 06.04.2021, 17:18 | |||||||
|
тогда нажимается и выделяется все по отдельности
если что выложи проект решения.
0
|
|||||||
|
Модератор
|
||
| 06.04.2021, 18:24 | ||
|
Мне тоже интересно что произойдёт быстрее: кто-то заморочится и под вас сделает готовую реализацию, или вы поймёте, что с WPF нельзя работать такими же костылями как в Формах. Добавлено через 1 минуту proa33, ТС даже слышать не хочет чтобы создать свой тип со свойством для выделения элемента. Я уже ему это предлагал. Ему надо CheckedListBox из Форм и без вариантов.
1
|
||
|
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
|
|||||||||||||||
| 07.04.2021, 14:22 [ТС] | |||||||||||||||
|
Добавлено через 4 минуты
Но разделять CheckBox и TextBlock я так понял здесь или где? А вообще вот окно:
0
|
|||||||||||||||
|
Модератор
|
||||||||||||
| 07.04.2021, 14:39 | ||||||||||||
![]() Похоже это я темы перепутал. Суть решения: делаете простейший класс со свойством для выделение:
VM передаёте или создаёте в Контексте Данных Окна. И ListBox с привязкой к этой коллекции:
0
|
||||||||||||
|
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
|
||||||
| 07.04.2021, 14:43 [ТС] | ||||||
|
Толи вы меня не понимаете толи я вас.
Да в принципе вот решение проблемы:
0
|
||||||
|
Модератор
|
||
| 07.04.2021, 14:43 | ||
|
В WPF они задаются в редких случаях. Для привязок типа ElementName, анимации и сеттеров в триггерах. Больше даже не припомню для чего их можно задавать. Вы же их явно не для этого задаёте - и следовательно что-то делаете неправильно.
0
|
||
|
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
|
||
| 07.04.2021, 14:48 [ТС] | ||
|
А ваш пример до сих пор не могу понять. Нет код конечно мне ясен но не могу понять а зачем там делать свойство ыделения? Оно не нужно мне для списка файлов. Я все равно буду отдельный список создавать для выделенных файлов чтобы его сразу использовать.
Добавлено через 2 минуты
0
|
||
|
Модератор
|
||||||||
| 07.04.2021, 14:49 | ||||||||
0
|
||||||||
|
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
|
||||||||
| 07.04.2021, 14:56 [ТС] | ||||||||
|
Для радиокнопок так яже через код должен к ним както обращаться чтобы вернуть какая операция выбрана. У списка можно и убрать но опятьже я говорил что xaml не видит список файлов его приходится указывать через код а следовательно и обращатся к списку тоже нужно.
Добавлено через 2 минуты Добавлено через 1 минуту Добавлено через 1 минуту
0
|
||||||||
|
Модератор
|
|||||||
| 07.04.2021, 14:56 | |||||||
|
Или в свойстве для позиционирования контента:
0
|
|||||||
|
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
|
|
| 07.04.2021, 14:57 [ТС] | |
|
Ну а для того чтобы убрать расширение прийдется класс отдельный делать и добавлять свойство. В принципе не сложно но пока трогать не буду. И так сойдет.
0
|
|
|
Модератор
|
||||
| 07.04.2021, 15:02 | ||||
|
Его можно привязать либо к самому ListBoxItem, но вас такое решение не устраивает. Либо к свойству элемента коллекции. По другому получить значение IsChecked будет очень сложно. Добавлено через 49 секунд Он возвращает имя без расширения. Добавлено через 2 минуты Все данные хранятся в VM. UI элементы их только Представляют (отображают в частности).
0
|
||||
|
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
|
||||||||||||
| 07.04.2021, 15:15 [ТС] | ||||||||||||
|
В принципе вот как я создаю список выделенных элементов:
Другое дело что свойство выделения с глобальным списком файлов будет лишним точнее оно не нужно глдобальным. Оно нужно только для модальной формы или надо всю идею продумывать по другому. Добавлено через 5 минут В принципе по идеи вот так должно работать:
0
|
||||||||||||
|
Модератор
|
||
| 07.04.2021, 15:28 | ||
|
Ещё раз пишу, в WPF Решении не должно быть обращения к UI элементам на Шарпе.
0
|
||
| 07.04.2021, 15:28 | |
|
Модальное окно без jQuery
Верстка без адаптации и модальное окно (photoSwip) Окно с тремя метками и модальное окно для изменения их текста Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
ИИ не может найти нужный язык в списке
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 и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|