2015-11-01 4 views
1

Я пытаюсь изменить цвет переднего плана ComboBoxItem, однако он не применяется, что я делаю неправильно? Также я пытаюсь изменить цвет переднего плана hovers на ComboBoxItem, который тоже не работает.Изменение цвета переднего плана ComboBoxItem

Вот моя XAML:

<ComboBox x:Name="tab5_2_num" ItemsSource="{Binding}" FontSize="13" FontFamily="/WPF;component/Font/#Agency FB" Margin="722,46,406,281" BorderThickness="1,1,1,4" Height="30"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <Label Content="{Binding}" /> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
    <ComboBox.ItemContainerStyle> 
     <Style TargetType="{x:Type ComboBoxItem}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type ComboBoxItem}"> 
         <Label x:Name="lblCombo" Foreground="Black" FontFamily="/WPF;component/Font/#Agency FB" FontSize="13" Height="20" /> 
         <ControlTemplate.Triggers> 
          <Trigger Property="IsMouseOver" Value="True"> 
           <Setter TargetName="lblCombo" Property="Background" Value="#FFF01F1F"/> 
           <Setter TargetName="lblCombo" Property="Foreground" Value="White" /> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </ComboBox.ItemContainerStyle> 
</ComboBox> 
+0

Могу ли я спросить, как вы узнали, что это не работает? Любое конкретное сообщение об ошибке или проявления? – tgpdyk

+0

На самом деле я делал это в обратном порядке, см. Ответ @JayZuo, с которым он работал :) – Valkyry

ответ

1

Поскольку вы установили Label в шаблоне ComboBoxItem «s, то Label набор в DataTemplate не будет работать. Поэтому, пожалуйста, используйте следующий код:

<ComboBox x:Name="tab5_2_num" Height="30" BorderThickness="1,1,1,4" FontFamily="/WPF;component/Font/#Agency FB" FontSize="13" ItemsSource="{Binding}"> 
    <ComboBox.ItemContainerStyle> 
     <Style TargetType="{x:Type ComboBoxItem}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type ComboBoxItem}"> 
         <Label x:Name="lblCombo" Content="{Binding}" FontFamily="/WPF;component/Font/#Agency FB" FontSize="13" Foreground="Black" /> 
         <ControlTemplate.Triggers> 
          <Trigger Property="IsMouseOver" Value="True"> 
           <Setter TargetName="lblCombo" Property="Background" Value="#FFF01F1F" /> 
           <Setter TargetName="lblCombo" Property="Foreground" Value="White" /> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </ComboBox.ItemContainerStyle> 
</ComboBox> 

Он должен работать.

+0

Работал как шарм, просто должен был дать Content = "{Binding}" на ярлык, спасибо – Valkyry

1

Прежде всего мне интересно, если вы видите Label содержание. Вам может понадобиться следующее:

<Label Content={Binding} ... /> 
+0

Я делал это в обратном порядке. спасибо – Valkyry