|
1 / 1 / 0
Регистрация: 15.08.2016
Сообщений: 58
|
|||||||||||||||||||||
WPF Сохранить значения выбранных чекбоксов в листбокс28.02.2020, 08:09. Показов 1711. Ответов 18
Метки нет (Все метки)
На WPF только начинаю переходить. Просьба не ругать.
В WinForm все было понятно. Есть N чекбоксов и чекбокс ВЫБРАТЬ ВСЕ. имя чекбоксов cbVP1, cbVP2 ... cbVP32 cboxOnOffAll имя чекбокса ВЫБРАТЬ ВСЕ реализация на WinForm следующая
(значения записываются в листбокс) на WinForm через таймер
XAML
если можно короткий пример.
0
|
|||||||||||||||||||||
| 28.02.2020, 08:09 | |
|
Ответы с готовыми решениями:
18
Сохранить значения value выделенных чекбоксов Отслеживание выбранных чекбоксов Удаление выбранных чекбоксов |
|
Модератор
|
||
| 28.02.2020, 12:40 | ||
|
То как вы делали (и, наверное, продолжаете делать) на WF (WinForms) - ни есть хорошо. Надо разделять Данные и их Представление. WF появился очень давно и поэтому там нет явного разделения этих понятий. Что, к сожалению, привело к массовому неправильному его использованию и испортило стиль программирования очень и очень многих. Поэтому то как вы делали - возможно в WF. Но это пример очень плохого, ущербного кода. WPF же создавался гораздо позже. Создавался специально как инструмент реализации View в паттерне MVVM. В нём уже явно разделено Представление данных и сами Данные, которые передаются в DataContext (Контекст Данных). В данном случае в вашей задаче, допустим, не ясно само её условие. Второй ListBox выводит отмеченные элементы первого. Это нужно Представлению (то есть интерфейсу пользователя)? Или отметка элементов должна изменить Данные и второй ListBox должен отобразить это изменение данных? Чуть позже скину пару примеров.
0
|
||
|
Модератор
|
|||||||||||||||||||||||||||||||||||||
| 28.02.2020, 13:41 | |||||||||||||||||||||||||||||||||||||
|
Во первых, в типе предназначенном для использования в Представление должен реализовываться INPC. Возьмите базовую реализацию отсюда Новая реализация OnPropertyChangedClass [WPF, Элд Хасп]. И запишите её в пространство Common. Сам тип для Представления элемента Данных
Так как взаимодействие между CheckBox для всех и в элементах носит локальный характер для Представления, то использовал в них обработчики Checked и Unchecked Целиком XAML и CB (Code Behind) Окна
0
|
|||||||||||||||||||||||||||||||||||||
|
1 / 1 / 0
Регистрация: 15.08.2016
Сообщений: 58
|
|
| 28.02.2020, 13:56 [ТС] | |
|
Второй ListBox выводит отмеченные элементы первого
но и при этом может удалят их этого списка элементы, которые были отмечены а потом с них сняты галочки. Т.е. список должен формироваться динамически. Это не нужно Представлению. Второй ListBox должен просто отобразить эти данные для их дальнейшего использования.
0
|
|
|
Модератор
|
|||||||||||||||||
| 28.02.2020, 14:05 | |||||||||||||||||
|
Тогда нем не нужен дополнительный тип для представления данных. И второй ItemsControl мы привязываем к свойству SelectedItems (не путать с SelectedItem!) первого ListBox. CollectionViewSource становится не нужной. ViewModel
0
|
|||||||||||||||||
|
Модератор
|
||||||
| 28.02.2020, 14:14 | ||||||
|
Для первого варианта изменения только в XAML
0
|
||||||
|
Модератор
|
|||||||||||
| 28.02.2020, 14:40 | |||||||||||
|
Для второго варианта XAMl и CB
0
|
|||||||||||
|
1 / 1 / 0
Регистрация: 15.08.2016
Сообщений: 58
|
|
| 28.02.2020, 15:17 [ТС] | |
|
может быть я совсем тупой. если можно
приведенный пример архивом проекта в готовом виде можете скинуть. у меня куча ошибок вылазит. Common пространство имен не найдено и т.д
0
|
|
|
1 / 1 / 0
Регистрация: 15.08.2016
Сообщений: 58
|
|
| 28.02.2020, 17:39 [ТС] | |
|
если я правильно понял. необходимо создать
3 папки Model ViewModel View в Modelпоместить представление ValP.cs в папку View поместить ListBoxVpV2 оба файла в папку ViewModel файл ViewModelV2.cs это правильно я понимаю? а если мне надо без MVVM тогда как это сделать? Добавлено через 14 минут спасибо огромное все работает. только во 2-м ListBox нужны только значения а сами чекбоксы не нужны. их можно как-то скрыть?
0
|
|
|
Модератор
|
||||
| 28.02.2020, 18:10 | ||||
|
Объясните детальнее, точнее что вы хотите реализовать. Добавлено через 3 минуты Другое дело что вы можете явно не выделять View, ViewModel, Model и тем самым себе значительно усложнить жизнь. В WF тоже есть отдельно Данные и их Предствление. И то, что начинающие всё валят в одну кучу, только им же самим и осложнят создание приложений.
0
|
||||
|
1 / 1 / 0
Регистрация: 15.08.2016
Сообщений: 58
|
|
| 28.02.2020, 18:22 [ТС] | |
|
сейчас все работает так.
любой отмеченный чекбокс из первого ListBox автоматически добавляется во второй ListBox и автоматически удаляется, если в 1м ListBox снята галочка. необходимо сделать чтобы выбранный чекбокс автоматически добавлял (удалял) значение (VP1...VP7 ) выбранного чекбокса. Добавлено через 1 минуту второй чекбокс нужен только для информации с ним не будет никаких действий в интерфейсной части. он как вспомогательный инструмент.
0
|
|
|
Модератор
|
|||||||||||||||||||||||
| 28.02.2020, 18:52 | |||||||||||||||||||||||
|
В первом варианте исправьте ItemsControl на такой
Во втором варианте уберите обработчик в первом ListBox
0
|
|||||||||||||||||||||||
|
1 / 1 / 0
Регистрация: 15.08.2016
Сообщений: 58
|
|
| 28.02.2020, 18:57 [ТС] | |
|
огромная человеческая благодарность.
все работает как часы. просто песня. где бы теперь все это прочесть. сложно переходить с WF на WPF. не могу понять BINDING. пока разобрался только с ресурсами.
0
|
|
|
Модератор
|
|||
| 28.02.2020, 19:41 | |||
|
Есть темы в подписи моего поста. Приложения на нём должны быть в паттернах MVC, MVP и аналогичных. Вы же сваливали всё в одну кучу в CB окна. Это даже ООП не назовёшь, скорее процедурное программировние. Умей вы создавать на WF нормальные приложения, переход на WPF проблем бы не вызвал. Напротив, очень многое на WPF гораздо легче реализовывается.
0
|
|||
|
1 / 1 / 0
Регистрация: 15.08.2016
Сообщений: 58
|
|
| 28.02.2020, 19:47 [ТС] | |
|
по сути имеется в ItemsControl переменный
массив значений из выбранных чекбоксов. как мне можно обращаться теперь к этому массиву? теперь же нет 2го листбокса. к этому списку могу обратиться? IEnumerable<ValP> list = ((ViewModelV1)DataContext).ListVP;
0
|
|
|
Модератор
|
|||||||||||
| 28.02.2020, 20:46 | |||||||||||
|
mabia, Вам нужно обрабатывать данные в ViewModel, а не в CB окна.
По нормальному надо использовать Behavior. Один из вариантов Behavior для привязки свойств только для чтения [WPF, Элд Хасп] Но с вашим стилем боюсь это будет через чур сложно. Вы пока обычные привязки делать не умеете. Как переходной вариант от ПРОЦЕДУРНОГО программирования, попробуйте такую реализацию. Объясняю на ВТОРОМ варианте Допустим, у вас есть метод в который надо получить список выделенных строк. В примере, этот метод их просто соединяет через точку с запятой и присваивает текстовому свойству. Для того чтобы вызвать это метод кнопкой надо объявить команду. Команда получает может получить один параметр в типе object. Команда состоит из двух методов. Метод состояния команды возвращает true когда команду можно выполнить. В теле метода (созданным лямбдой) мы проверяем приводимость параметра к IEnumerable и наличии в нём хоть одной строки. В исполнительном методе преобразуется параметр в последовательность строк и она передаётся в нужный метод.
И снизу под кнопкой добавим TextBlock для вывода полученного в методе значения.
0
|
|||||||||||
| 28.02.2020, 20:46 | |
|
Помогаю со студенческими работами здесь
19
Плагин отображения выбранных чекбоксов
Подсчитывание количества значений в столбце выбранных чекбоксов
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|