Kann jemand weiß,Wie ändere ich die Combobox-Hintergrundfarbe beim Anklicken (ComboBox ist offen) in WPF?
Wie Combobox Hintergrundfarbe während Klicken (ComboBox ist offen) in WPF ändern?
Kann jemand weiß,Wie ändere ich die Combobox-Hintergrundfarbe beim Anklicken (ComboBox ist offen) in WPF?
Wie Combobox Hintergrundfarbe während Klicken (ComboBox ist offen) in WPF ändern?
Hier ist ein etwas naiver Ansatz:
<ComboBox
ItemsSource="{x:Static Fonts.SystemFontFamilies}"
Width="100"
>
<ComboBox.Style>
<Style TargetType="ComboBox">
<Setter Property="Background" Value="Green" />
<Style.Triggers>
<Trigger Property="IsDropDownOpen" Value="True">
<Setter Property="Background" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
Zunächst stellt dies die Background
Eigenschaft auf Green
, aber arrangiert für sie zu Red
gehen, wenn die Dropdown-angezeigt. Allerdings gibt es zwei Probleme:
ComboBox.Background
betrifft nur das Erscheinungsbild der Schaltfläche selbst und nicht die Dropdown-Liste. Es ist möglich, dass Sie die Hintergrundfarbe des Teils, der angezeigt wird, ändern möchten.Wenn 2 ist das, was man wollte, tut dies der Trick:
<ComboBox
ItemsSource="{x:Static Fonts.SystemFontFamilies}"
Width="100" >
<ComboBox.Resources>
<Style TargetType="ComboBoxItem">
<Setter Property="Background" Value="Orange" />
</Style>
</ComboBox.Resources>
</ComboBox>
Streng genommen, dass tatsächlich ist die Hintergrundfarbe der ComboBoxItem
Kontrollen zu ändern, die in der Dropdown-Liste erscheinen, aber das wird die gewünschte Wirkung haben .
Wenn Sie jedoch 1 reparieren möchten, benötigen Sie eine benutzerdefinierte Vorlagen, weil die integrierte Vorlage ComboBox
nicht wirklich sehr gute Unterstützung für die Background
-Eigenschaft bietet, da es die Farbe der Schaltfläche Teil ändert unter verschiedenen Umständen. Das Aero-Thema sucht nach einer ComboBox
ist wirklich nicht entworfen, um eine benutzerdefinierte Hintergrundfarbe zu unterstützen, so dass Sie Ihr eigenes Aussehen für das Steuerelement erstellen müssen.
Okay, Ihre Frage Code hinter zu beantworten:
Liste Artikel zu Ihrem Kombinationsfeld:
foreach (String tag in tags)
{
ComboBoxItem item = new ComboBoxItem();
item.Content = tag;
cbTags.Items.Add(item);
}
Dann können Sie den Artikel Hintergrundfarbe ändern:
((ComboBox)o).Background = GetBrushByRGB(r, g, b);
foreach (ComboBoxItem item in ((ComboBox)o).Items)
{
item.Background = GetBrushByRGB(r, g, b);
}
Also im Grunde Sie müssen die Hintergrundfarbe des ComboBoxItem ändern.
Zuerst müssen Sie die Standardvorlage für die Combobox (unten Details, wenn Sie sie benötigen) erhalten. Dann setzen Sie diese XAML innerhalb des ersten „ControlTemplate.Triggers“ tag:
<DataTrigger Binding="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" Value="True">
<Setter Property="Background" TargetName="templateRoot" Value="Red"/>
</DataTrigger>
Ihre Combobox Taste Rot sein wird, wenn das Drop-Down geöffnet ist.
Um die Standard-Vorlage: In Visual Studio 2015 Ihre Seite im Entwurfsmodus anzuzeigen. Klicken Sie dann mit der rechten Maustaste auf die Combobox und wählen Sie "Vorlage bearbeiten-> Kopie bearbeiten". Dadurch wird die Standardvorlage für Sie generiert.
Können Sie uns mitteilen, welche Sprache oder welches Framework Sie verwenden? – Dominic
welche Programmiersprache? – spajce
Hallo, es ist WPF (.Net) – Nimesh