2015-02-27 5 views
0

У меня есть следующий чистый XAML:WPF DataTrigger не работает на ComboBox?

<DockPanel> 
    <ComboBox Name="combo" Height="24" Width="60"> 
     <Border Background="Gray" Padding="20,10"> 
      <Border.Style> 
       <Style TargetType="Border"> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding ElementName=combo, Path=IsDropDownOpen}" Value="True"> 
          <Setter Property="Background" Value="Red"></Setter> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Border.Style> 
     </Border> 
    </ComboBox> 
    <TextBlock Text="{Binding ElementName=combo, Path=IsDropDownOpen}"></TextBlock> 
</DockPanel> 

Я бы ожидать, что DataTrigger изменить цвет фона border объекта red как только открывается выпадающий, но вместо этого ничего не происходит.

ответ

2

Поскольку вы установили свойство фона непосредственно на ComboBox, триггер не будет переопределять это значение.

Это поведение объяснено on MSDN.

Вы должны установить его в стиле, а не так:

<Border Padding="20,10"> 
    <Border.Style> 
     <Style TargetType="Border"> 
      <Setter Property="Background" Value="Gray" /> 

      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=combo, Path=IsDropDownOpen}" Value="True"> 
        <Setter Property="Background" Value="Red"></Setter> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Border.Style> 
</Border>