2009-11-09 3 views
1

Я пытаюсь разработать стиль для ComboBox, который имеет темно-синий фон с белым текстом, поэтому я хочу, чтобы стрелка вниз была также белой (xaml, который у меня есть до сих пор ниже).Как получить белый цвет WPF ComboBox DropDown?

<Style x:Key="ComboBoxStyle" TargetType="ComboBox"> 
    <Setter Property="Background" Value="{StaticResource headerBrush}"/> 
    <Setter Property="Foreground" Value="White"/> 
    <Setter Property="BorderBrush" Value="{StaticResource headerBorderBrush}"/> 
    <Setter Property="BorderThickness" Value="1"/> 
    <Setter Property="SnapsToDevicePixels" Value="True"/> 
    <Setter Property="MinWidth" Value="100"/> 
    <Setter Property="Height" Value="21"/> 
    <Setter Property="Cursor" Value="Hand"/> 
    <Setter Property="Padding" Value="5"/> 
    <Setter Property="Margin" Value="3"/> 
    <Setter Property="HorizontalContentAlignment" Value="Center"/> 
    </Style> 
    <Style x:Key="ComboBoxItemStyle" TargetType="ComboBoxItem"> 
    <Setter Property="Background" Value="AliceBlue"/> 
    <Setter Property="Foreground" Value="Navy"/> 
    <Setter Property="HorizontalContentAlignment" Value="Left"/> 
    </Style> 

ADDED код для установки ControlTemplate?

ответ

2

Вам необходимо отредактировать контрольную панель ComboBox, и вы можете увидеть стрелку как путь. Поэтому измените свойство Fill пути на нужный цвет стрелки. См. Образец ControlTemplate здесь http://msdn.microsoft.com/en-us/library/ms752094.aspx

+0

На самом деле я не получаю ControlTemplates, но думаю. Целевым типом в этом примере был ToggleButton, который сделал меня исключением в дизайне xaml. Изменение его на ComboBox, похоже, превратило весь белый контроль. Есть ли что-то простое, что я могу сделать, чтобы исправить это (см. Отредактированный код)? Спасибо – Berryl

+0

Если у вас есть выражение, просто щелкните правой кнопкой мыши и выберите «Редактировать шаблон» -> «Редактировать копию» (я думаю, что это правильные имена). В противном случае вы должны использовать Reflector с надстройкой BamlViewer, чтобы получить XAML из PresentationFramework.Aero.dll и вырезать нужные вам детали. –

+1

Проблема с вашим отредактированным шаблоном заключается в том, что у него нет всех других функций ComboBox. Когда вы посмотрите на поставляемый Microsoft шаблон, вы увидите, что это довольно сложно. Скопируйте их код и внесите необходимые изменения. –