|
Несколько ToggleButton
|
|||
---|---|---|---|
#18+
Как можно сделать такое: несколько ToggleButton, при чем одновременно может быть нажата или одна кнопка или ни одной. Если я делаю через RadioButton со стилем ToggleButton, то в пределах группы/панели работает половина из необходимого: одновременно будет нажата только одна кнопка. Но при этом "отщелкнуть" кнопку уже нельзя, чтобы ни одна не была нажата. Как такое сделать? Еще хорошо бы, чтобы нажатие на любую кнопку инициировало событие клик или команду (MVVM). Или может быть как-то прикрутить enum со значениями по числу кнопок, а во ViewModel заиметь некое свойство - выбранный в данный момент режим (кнопка) или null, если все кнопки не нажаты. Тогда при изменении свойства можно было определять какой элемент из enum сейчас выбран и выполнять соответствующие действия. Как-то так, только не пойму, какой тут конвертер нужен. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Код: xml 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2017, 15:34 |
|
Несколько ToggleButton
|
|||
---|---|---|---|
#18+
Qwe.Qwe1"отщелкнуть" кнопкуделать на чекбоксах, иначе пользователю не будет ясно, что можно "отщелкнуть" Qwe.Qwe1какой тут конвертер нужен.Кастомный. При этом он же сможет отключать другие чекбоксы, когда включается какой-либо ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2017, 15:47 |
|
Несколько ToggleButton
|
|||
---|---|---|---|
#18+
Shocker.Pro, ToggleButton и CheckBox по сути один и тот же объект. на с сколько я помню, оба унаследованы от BaseButton. Есть еще 1 способ как это сделать: Берёте ListBox, в режиме одиночного выделения у ListBox может быть выделена либо 1 ListBoxItem, либо не 1 :) то, что вам надо. Далее вы либо переопределяете шаблон ListBoxItem'а, удаляете от туда всё говно типа выделения строки и оставляете только кнопки. Меняете панель с вертикальной на горизонтальную или как вам там нужно, без виртуализации Связывайте свойства IsSelected со свойством IsChecked, профит :) У меня для таких целей есть контрол UniversalBox, в нём можно указать, какие элементы управления вы хотите получить в качестве контейнеров :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2017, 16:06 |
|
Несколько ToggleButton
|
|||
---|---|---|---|
#18+
Вот так я сделал и почти работает как надо, но: 1) Как сделать, чтобы айтемы листбокса выглядели как кнопки? 2) И как отщелкнуть кнопку нажатием же на нее? Сейчас - только с зажатым Ctrl. Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2017, 23:16 |
|
Несколько ToggleButton
|
|||
---|---|---|---|
#18+
Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2017, 23:23 |
|
Несколько ToggleButton
|
|||
---|---|---|---|
#18+
Здорово!! А как прикрутить свойство VM или модели, чтобы можно было понять, какая кнопка нажата? Все тот же enum, например. Тогда, если я правильно понимаю, можно повесить на все кнопки одну команду клик и в ней проверять текущую нажатую кнопку и выполнять то или иное действие. Правда не понятно, что будет при отжатии кнопки.. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2017, 10:43 |
|
Несколько ToggleButton
|
|||
---|---|---|---|
#18+
Qwe.Qwe1, при отжатии будет выполняться та же команда, нужно передавать состояние кнопки в команду, чтоб понять, какое действие нужно выполнить. Но есть способ проще. Так как вы используете List, предоставьте в качество списка набор Enum элементов заданного типа. Можно получить их либо через DataObjectProvider, либо через модель на ваше усмотрение. Так как нажатая кнопка соответствует выделенному элементу в ListBox, значение выбранного Enum значения можно получить в SelectedItem ListBox'а и связать его со свойством ViewModel. Свойство должно быть Nullable, так как тип перечисления по сути своей структура. Пример нужен или сами разберётесь? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2017, 11:12 |
|
|
start [/forum/topic.php?fid=21&msg=39530886&tid=1440492]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
310ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 230ms |
total: | 634ms |
0 / 0 |