Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Стилизация элементов Combobox


Автор: Real McCoy 28.9.2011, 17:08
Здравствуйте!

Есть Combobox и стиль для него и его элементов. У каждого элемента отличным от фонового цветом отрисовывается верхняя граница. При этом элементы списка выглядят разделёнными, что хорошо, но у самого верхнего граница сливается с верхним бордюром всего списка, что портит вид.

Есть ли способ В СТИЛЕ задать отдельный стиль для верхнего элемента?

Спасибо!

user posted image

Автор: Gvozdin 28.9.2011, 18:00
Как решение можно предложить сделать свойство IsFirst для ComboBoxItem, аттачед или же наследуя от ComboBoxItem новый класс сделать прямо в нем отдельное свойство.

Значение IsFirst надо будет задавать при изменениях в комбобоксе, определить первый элемент или нет не сложно, cложности только отловить момент когда  устанавливать значение IsFirst ...

IsFirst меняется когда:
1. Добавился элемент
2. Удалили элемент
3. поменяли ComboBox.ItemsSource
4. и тп

Автор: Real McCoy 29.9.2011, 11:59
Спасибо за Ваше предложение. Я думал в том же направлении, но в итоге решил проблему иначе. 

Это, конечно, довольно грубый хак, но по затратам окупается в разы: в стиле ComboBoxItem'а установил верхний Margin в -1, и соответственно увеличил вертикальный Padding.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)