#silverlight #silverlight-4.0 #wpfdatagrid #visualstatemanager
#silverlight #silverlight-4.0 #wpfdatagrid #visualstatemanager
Вопрос:
1) Представьте, что элемент управления DataGridColumnHeader по умолчанию должен быть зеленого цвета.
2) Если я нажму на него, это активирует сортировку по «Сортировке по возрастанию», именно тогда она должна стать оранжевой. Повторный щелчок по нему изменит его на «Сортированный по убыванию», который по-прежнему должен оставаться оранжевого цвета.
Два приведенных выше случая легко выполнить с помощью VSM. Однако следующие два сценария кажутся мне невозможными без мульти-триггера (которого у нас нет в Silverlight)
1b) Всякий раз, когда я навожу курсор мыши на несортированный элемент управления, он должен становиться светло-зеленым. При наведении курсора мыши он должен вернуться к базовому зеленому.
2b) Всякий раз, когда я навожу курсор мыши на отсортированный элемент управления, он должен становиться светло-оранжевым. При наведении курсора мыши он должен вернуться к базовому оранжевому.
Как я должен определить в состоянии наведения курсора мыши, в каком режиме находится отсортированное состояние, чтобы выбрать светло-оранжевый или светло-зеленый соответственно? В качестве альтернативы можно ли осветлить текущий цвет, не зная, какого он на самом деле цвета?
Ответ №1:
Вероятно, проще всего было бы просто уменьшить непрозрачность при наведении курсора мыши, эффективно делая зеленый и оранжевый цвета светлее.
Или, в качестве альтернативы, вы могли бы создать визуальную группу состояний для отсортированных состояний, установить ее с помощью триггера данных и соответствующим образом изменить цвет наведенного курсора мыши на элемент.
Комментарии:
1. Спасибо, я попробую совет с непрозрачностью. Что касается вашего альтернативного решения, как мне следует использовать триггер данных в Silverlight? 🙂 У нас их нет, забыли?
2. Рад, что это помогло 🙂 Вы можете получить триггеры данных (и множество других полезных элементов), работающих с Silverlight, из CodePlex: expressionblend.codeplex.com /…
3. Спасибо, я посмотрю на это.