|
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
|
||||||
ICommand и radiobutton взаимоотношения04.03.2020, 11:36. Показов 3915. Ответов 39
Метки нет (Все метки)
Привет,
если с просто button_click все ясно, то как быть с radio button в случае использования ICommand?
0
|
||||||
| 04.03.2020, 11:36 | |
|
Ответы с готовыми решениями:
39
ICommand в WPF Комманды и ICommand
|
|
Модератор
|
|||||||||||||||||||||
| 04.03.2020, 18:18 | |||||||||||||||||||||
|
Ахромчон, вот вам развёрнутый пример использования RadioButton для выбора одного из значений перечисления.
Это пример демонстрирует присущие RadioButton особенности: Это групповой элемент и выбран может только один из них Они предназначены для Представления данных с жёстко заданными вариантами значений Само по себе состояние каждого RadioButton значение не имеет. Перечисление
В нём используется общий стиль для всех одинаковых RadioButton. Но для каждого задан свой Контент соответсвующий его значению
1
|
|||||||||||||||||||||
|
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
|
|
| 04.03.2020, 21:32 [ТС] | |
|
test
0
|
|
|
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
|
|||||||||||
| 05.03.2020, 07:59 [ТС] | |||||||||||
|
Элд Хасп,
посмотрел в сети -это реальная проблема для тех кто пользуется MVVM. Все пишут костыли. Почему проблема? Потому что чтобы использовать два несчастных события любезно предоставленных в CB, в случае с использованием MVVM это превращается в пару десятков строк. Ну не умеет MVVM то что умеет CB! В MVVM такая изящная и полезная Command (в случае с Button_click), совершенна бесполезна в случае Checked, Unchecked. вот нельзя ее разорвать на две. Нет, можно конечно = "костылем". Хотел спросить, наряду с пользованием с основной массой компонентов
хотел бы пользоваться из CB для радиокнопок, в свете того, что MVVM без костылей не может рабоать с Radiobuttons.
0
|
|||||||||||
|
Модератор
|
||
| 05.03.2020, 10:07 | ||
|
И несмотря на реализацию MVVM (а это ярко выраженный паттерн ООП) мышление, привычки остались от процедурного программирования. Я вам дал несколько примеров. Вам по всей видимости они не подходят. Покажите как у вас привязаны RadioButton к данным и что вы хотите сделать по тому или иному изменению RadioButton. Добавлено через 18 минут Ахромчон, Я почему за это пишу. Привязка RaddioButton к данным далеко не такая тривиальная как TextBlock. RaddioButton это ГРУППОВОЙ элемент. Очень редко в данных бывают свойства которые напрямую можно привязать к группе RaddioButton. Выше я показал пример возможной привязки. Там для привязки к ОДНОМУ свойству надо использовать ГРУППУ RaddioButton и делать это приходится через конвертер.
0
|
||
|
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
|
|||||||||||
| 05.03.2020, 10:50 [ТС] | |||||||||||
|
Элд Хасп, я бы использовал "костыли". Даже нашел один в сети. Но у меня есть такое необычное свойство.
![]() Я после 3-х... 6-ти месяцев гляжу на собственный код уже рабочего и сданного приложения, и не верю глазам своим, что я это написал. И могу целый день "бычить" на это ничего не понимая как это работает. Чем меньше прямой логики в коде, тем больше приходится "бычить". А время -деньги! Наверное потому, что я не занимаюсь этим 24/7 в неделю. Элд Хасп, логика простейшая, в которой невозможно ошибиться. В ХAML две радиокнопки. У каждой создано по два события Checked, Unchecked соотвественно. В Сode Behind
Добавлено через 9 минут сейчас вышел из положения так в события вписал вот это и устанавливаю биты в VM. Например.
0
|
|||||||||||
|
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
|
|
| 05.03.2020, 11:11 | |
|
.. я всё-таки не пойму, зачем четыре метода, где должен быть один ..?
0
|
|
| 05.03.2020, 11:17 | |||||||||||
|
Если правильно понял автора, то вот. Если неправильно, то и ладно
![]()
1
|
|||||||||||
|
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
|
||||||
| 05.03.2020, 11:33 [ТС] | ||||||
Hugonavy,
Этого "добра" в сети полно, как будто один у другого списывает. В первом "что-то делаем", хорошо, садим бит. Когда кнопка становится Unchecked где его снимаем? ![]() В соседней кнопке? Мне даже такой "горотьбы" не надо, чтобы исполнить у соседа. А вот снять бит той же кнопкой, что был посажен. Большой вопрос. Только в СB.
0
|
||||||
|
управление сложностью
|
||
| 05.03.2020, 11:54 | ||
|
Ахромчон, смысл ваших вопросов, если и так все делаете по-своему ?
Добавлено через 2 минуты Добавлено через 1 минуту Я понимаю что вы электронщик, и мыслите линейно (так привыкли) и пытаетесь ООП подвести под функциональщину, поэтому и негодуете, т.к. это идет вразрез с вашей логикой.
0
|
||
|
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
|
|
| 05.03.2020, 11:57 | |
|
.. я не знаю WPF, но подозреваю, что в метод CodeBehind можно передать sender-а? ... вот его через switch и переменную в true, остальных в false ... ну это же взаимозависимые элементы одного контрола, а не независимые ... в радиоприемниках дедушкиных так диапазоны переключались ...
0
|
|
|
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
|
|
| 05.03.2020, 12:32 | |
|
Самый большой промах знатоков ООП, что они считают, что ООП сделано само для себя. Да, есть такие приложения типа Калькулятора зацикленные сами на себя.
Но в реальной жизни кому они нужны? В Винде есть, на столе тоже лежит.
0
|
|
|
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
|
||
| 05.03.2020, 12:41 [ТС] | ||
|
1
|
||
|
Модератор
|
|||||
| 05.03.2020, 16:28 | |||||
|
Основная часть WPF Решения сделанного в паттерне MVVM - это Модель. А WPF это всего лишь Представление данных полученных из Model. Вот вы пишите // садим бит 1 в "true".Какой в Представлении может быть бит ??? !!! Бит сам по себе? Где данные и как это бит с ними связан? Для создания Представления нужно сначала создать привязку этого представления к данным. А что у вас Представляют RadioButton - сами себя? Ну, тогда это никакой не MVVM. Допустим, в моём примере я явно не выделил Модель. Так как думал, что из-за простоты примера это и так понятно. В том примере, перечисление NumbersEnum, свойство Number и метод создаваемый лямбдой p => Number = (NumbersEnum)p - это часть Model. К ViewModel относится только сама команда, которая обращается к методу Модели, и свойство Number, которое не будет иметь своего сеттера, а только привязку к свойству Модели.Поэтому, создайте сначала Модель. В том числе все методы для работы с данными. И тогда 90% вопросов по View у вас сами собой отпадут. Начиная создавать приложение с другого конца (с WPF View) вы сами себе создаёте кучу трудностей, которые героически преодолеваете, но которые, по сути, совершенно не нужны для нормальной работы приложения. Ошибка та же, что и Ахромчон. Что представляют RadioButton? У вас - по сути, сами себя. А у ТС - по идее, биты чего-то. Вот этой привязки к данным нет ни у вас, ни у самого Ахромчон Добавлено через 9 минут Хорошие знание и практика ООП кроме всего прочего ещё наводит и "порядок в голове". Что позволяет делать гораздо белее "красивый" процедурный код. Добавлено через 10 минут До этого о C# только слышал, о WPF - даже названия не знал. Но при осваивании я сам себе запретил делать "костыли". Ни чего. По началу было трудно, но больше из-за бардака в голове в котором приходилось наводить порядок. Вы так же не делайте костылей и по неволе освоите. По этой причине, я уже многократно писал. Начинающим, для быстрейшего освоение правильной реализации WPF решений, при создании окон надо оставлять их CB совершено пустым.
1
|
|||||
|
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
|
||
| 05.03.2020, 16:49 | ||
, что кода недостаточно, а я думаю, я искать сам буду дольше или код вываливать на форум буду дольше. Дилеммка.
0
|
||
|
Модератор
|
||||||||||||||||||||||
| 05.03.2020, 20:15 | ||||||||||||||||||||||
|
С выделенной Моделью, чтобы было понятно, что RadioButton - это не "вещь в себе", а Представление Данных, находящихся в Model.
0
|
||||||||||||||||||||||
|
Модератор
|
|||||||||||
| 05.03.2020, 20:59 | |||||||||||
|
Ахромчон, Bulky, Hugonavy, carrotik, одной из ключевых возможностей MVVM является возможность изменения View не влияющая на VM.
Если использовать обработку событий Checked и Unchecked, то мы жёстко завязываем ViewModel на конкретную реализацию View. Так как такие события есть только у RadioButton. В примере же из моего поста выше мы без проблем можем изменить View заменив его на ComboBox. Используем слегка дополненный WPF конвертер из темы WPF конвертеры [Элд Хасп]
0
|
|||||||||||
|
Модератор
|
|||||||||||
| 05.03.2020, 20:59 | |||||||||||
|
Ахромчон, Bulky, Hugonavy, carrotik, одной из ключевых возможностей MVVM является возможность изменения View не влияющая на VM.
Если использовать обработку событий Checked и Unchecked, то мы жёстко завязываем ViewModel на конкретную реализацию View. Так как такие события есть только у RadioButton. В примере же из моего поста выше мы без проблем можем изменить View заменив его на ComboBox. Используем слегка дополненный WPF конвертер из темы WPF конвертеры [Элд Хасп]
0
|
|||||||||||
| 05.03.2020, 20:59 | |
|
ICommand и Template, Command Parametr
Полное представление async ICommand EventArgs при использовании ICommand для событий в MVVM Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
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.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|