Элегантно переопределить стиль 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; доктор, как бы вы, ребята, сделали это?

Ответы на вопрос(2)

Ваш ответ на вопрос