|
Цвет выделенного элемента в ListBox
|
|||
---|---|---|---|
#18+
На многих ресурсах для изменения цвета выделенного элемента предлагается изменить системные предопределённые цвета SystemColors.HighlightTextBrushKey , SystemColors.HighlightBrushKey , SystemColors.ControlBrushKey . Я проверял этот способ - но результат нулевой. Один из проверенных вариантов Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Кто может объяснить в чём причина? Есть какие-то особенности применения? Или этот метод когда-то работал, а сейчас перестал? В данный момент для этого я использую определение стиля в ресурсах ListBox Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9.
Правильный ли такой подход? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 13:57 |
|
Цвет выделенного элемента в ListBox
|
|||
---|---|---|---|
#18+
шаблон ListBoxItem переопределен? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 14:03 |
|
Цвет выделенного элемента в ListBox
|
|||
---|---|---|---|
#18+
Eld HaspКто может объяснить в чём причина? Есть какие-то особенности применения? Или этот метод когда-то работал, а сейчас перестал? Эти цвета и эта раскраска применяется для ListBoxItem. В другой теме уже говорилось , что ListBoxItem и ListBox - это разные визуальные дереья, и ListBoxItem не может видеть ресурсы из стиля ListBox. Эти переопределенные цвета нужно помещать в стиль ListBoxItem: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
P.S. Я бы лично не стал переопределять системные цвета - это будет влиять на всё приложение. Просто сделал бы отдельный стиль для листбокса, где в триггерах бы напрямую указал, в каком случае какой цвет, и всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 14:37 |
|
Цвет выделенного элемента в ListBox
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныP.S. Я бы лично не стал переопределять системные цвета - это будет влиять на всё приложение. Просто сделал бы отдельный стиль для листбокса, где в триггерах бы напрямую указал, в каком случае какой цвет, и всё.То есть вариант с триггерами, который я привёл, это верное решение?Roman Mejtesшаблон ListBoxItem переопределен?Нет, весь код указан здесь полностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 16:04 |
|
Цвет выделенного элемента в ListBox
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныЭти цвета и эта раскраска применяется для ListBoxItem. В другой теме уже говорилось, что ListBoxItem и ListBox - это разные визуальные дереья, и ListBoxItem не может видеть ресурсы из стиля ListBox. Эти переопределенные цвета нужно помещать в стиль ListBoxItem:Самое интересное, что у кого-то до сих пор это работает в таком же виде! Вот скриншот прислали мне только что [img=] ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 16:10 |
|
Цвет выделенного элемента в ListBox
|
|||
---|---|---|---|
#18+
это зависит от выбранной темы Windows, скорее всего ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 17:09 |
|
Цвет выделенного элемента в ListBox
|
|||
---|---|---|---|
#18+
Roman Mejtesэто зависит от выбранной темы Windows, скорее всегоЯ тоже пришёл к такому мнению. Но мне прислали только скрин и не ответили на вопрос о системе, версиях VS и FW. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 18:41 |
|
Цвет выделенного элемента в ListBox
|
|||
---|---|---|---|
#18+
Миль пардон, ошибся. Заглянул в документацию - поиск ресурсов ведется не по визуальному дереву, а по логическому, и в случае DynamicResource (в дефолтном теплейте ListBoxItem цвета адресуются именно через DynamicResource) поиск ведется и в стилях, и шаблонах. Единственный мутный момент, плохо разъясненный в документации - вот этот: 1. The lookup process checks for the requested key within the resource dictionary defined by the element that sets the property. - If the element defines a Style property, the Resources dictionary within the Style is checked. - If the element defines a Template property, the Resources dictionary within the FrameworkTemplate is checked. 2. The lookup process then traverses the logical tree upward, to the parent element and its resource dictionary . This continues until the root element is reached. - т.е. ресурсы в стилях и шаблонах ищутся только несоредственно у элемента, запрашивающего ресурс. Однако, учитывая, что вот это тоже вполне работает: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
можно сделать вывод, что документация недоговоравает - поиск в стилях и словарях делается в каждом элементе траверса поиска в логическом дереве. Так что исходный пример вполне рабочий (и у меня он тоже работает). Системные стили и темы здесь вряд ли играют какое-то значение, т.к. в них процесс поиска заглядывает только тогда, когда ничего не нашлось ни в логическом дереве, ни в ресурсах приложения, а здесь всё вполне должно найтись. Скорее всего, где-то переопределен стандартный шаблон ListBoxItem. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 11:28 |
|
Цвет выделенного элемента в ListBox
|
|||
---|---|---|---|
#18+
Сон Веры Павловны! Мне дали ещё такое разъяснение. Мой скриншот выше сделан на семерке, сейчас попробовал на десятке — тоже не работает. Дефолтный стиль ListBoxItem на семерке: Код: 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.
Все требуемые ключи для переопределения в наличии. Дефолтный стиль на десятке: Код: 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. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62.
Как видим, используются другие ключи, да еще и как StaticResource вместо DynamicResource, а поскольку объявлены эти кисти ближе к дефолтному стилю, постольку они и используются. Наверное, в этом случае проще переопределить стиль (шаблон — выше). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 13:56 |
|
Цвет выделенного элемента в ListBox
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, какое Ваше мнение на этот счёт? Лучшее решение переопределить стиль с использованием триггеров для IsSelected и IsSelectionActive? Или какой-то иной подход надо использовать для этого случая? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 14:00 |
|
Цвет выделенного элемента в ListBox
|
|||
---|---|---|---|
#18+
Eld HaspМой скриншот выше сделан на семерке, сейчас попробовал на десятке — тоже не работает. Т.е. не работает и на 7, и на 10? Или на 7 работает, на 10 не работает? Если первое - не знаю, у меня на Win7 работает вполне нормально. Если второе, то это легко объяснимо - static resources lookup работает только по ресурсным словарям, объявленным непосредственно в элементах, и не заглядывет в стили и шаблоны элементов, поэтому дефолтный шаблон на Win10 даже и не думает смотреть на объявленные вами стили, и на цвета внутри них. И это, кстати, еще одно доказательство того, почему переопределение системных ключей - не лучший выход: надо всегда знать, как устроен дефолтный шаблон в текущем окружении, и быть готовым к тому, что при смене версии ОС, или при очередном сервис-паке всё это вдруг перестанет работать. А вариант со стилем, где цвета заданы в триггерах, будет работать всегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 14:23 |
|
Цвет выделенного элемента в ListBox
|
|||
---|---|---|---|
#18+
Eld Hasp, я обычно такие вещи делаю через триггеры, чем долбаться с этими системными кистями и ловить баги в разных системах. Еще хочу обратить ваше внимание на такую штуку как VisualStateManager ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 15:00 |
|
Цвет выделенного элемента в ListBox
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныEld HaspМой скриншот выше сделан на семерке, сейчас попробовал на десятке — тоже не работает. Т.е. не работает и на 7, и на 10? Или на 7 работает, на 10 не работает? На 7-ке работает. Как и у Вас.Сон Веры ПавловныА вариант со стилем, где цвета заданы в триггерах, будет работать всегда.Roman Mejtesя обычно такие вещи делаю через триггерыПонял вас. Подобное надо делать через триггера. Так и буду делать. Спасибо за советы и помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2018, 01:08 |
|
|
start [/forum/topic.php?fid=21&msg=39716563&tid=1440385]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 17ms |
total: | 183ms |
0 / 0 |