Элегантно переопределить стиль ToggleButton ComboBox в WPF
У меня есть вопрос относительно того, как элегантно переопределить произвольный элемент глубоко внутри элемента управления.визуальное дерево. Я также попытался решить ее несколькими различными способами, но яМы столкнулись с несколькими проблемами с каждым. Обычно, когда я пробую три разных пути и терплю неудачу на каждом из них, я спускаюсь вниз, пью кофе и спрашиваю кого-то умнее меня. И вот я здесь.
Особенности:
Я хочу сгладить стиль поля со списком, чтобы он не привлек к себе внимание. Я хочу, чтобы он был похож на Windows.Forms.ComboBox 's FlatStyle Я хочу, чтобы он выглядел одинаково на Windows 7 и XP.
В основном, я хочу изменить внешний вид ComboBoxS ToggleButton.
Я мог бы просто использовать Blend и скопировать шаблон управленияs внутренностей и вручную изменить их. Это неэто звучит очень аппетитно для меня.
Я пытался использовать стиль, чтобы переопределить ToggleButton 'фон, но оказывается, что весь элемент управления ComboBox на самом деле является фронтом для ToggleButton.
Поэтому я сдался и разорвал его, используя Blend. Я обнаружил, что этоНа самом деле это стиль под названием ComboBoxTransparentButtonStyle с целевым типом ToggleButton. Стиль устанавливает ControlTemplate, который использует DockPanel, который имеет "Microsoft_Windows_Themes: ClassicBorderDecorator» наберите вправо иэто что мы'на самом деле пытается контролировать. (Ты со мной так далеко?)
Вот's картинка:
Arg. Isn»т WPF взрыв?
Поэтому я извлек стиль ComboBoxTransparentButtonStyle и поместил его в другой проект.Приложение. Ресурсы. Проблема в том, что я могуприменять этот стиль к ComboBox, потому что у стиля, который я извлек, есть targetType ToggleButton, поэтому TargeTypes нет совпадают.
tl; доктор, как бы вы, ребята, сделали это?