Ich habe ein Problem mit ComboBox Hervorhebung, die schwarzen Text auf einem blauen Hintergrund zeigt, wenn der Text für die Hervorhebung sollte weiß sein.
Ich habe Beispiele für ComboBox, die ComboBoxItems verwenden, wo der Inhalt eine Zeichenfolge ist. Die Combobox in diesen Fällen verhalten sich wie erwartet - wenn die Combobox nach unten fallen gelassen wird, wenn Sie ein Element markieren es zeigt weißen Text auf einem blauen schwarzen Hintergrund.
Ich habe jedoch ein Beispiel für eine Combobox, bei der der Inhalt jedes ComboBoxItems ein Raster ist (das Raster enthält 2 Spalten - die erste enthält Text und die zweite eine Zeile - es ist eine Combobox mit Zeilendicke). In diesem Fall, wenn die Combobox heruntergeklappt wird, wird, wenn Sie ein Element markieren, schwarzer Text auf blauem Hintergrund anstelle von weißem Text angezeigt. Hinweis: Auch wenn ich den Zeilenteil entferne und somit nur eine Spalte mit Text habe, sehe ich das Problem immer noch.
Am ehesten kann ich das Problem lösen, wenn ich der Combobox für SystemColors.HighlightBrushKey und SystemColors.HighlightTextBrushKey eine Ressource hinzufüge, mit der ich die Farbe des Pinsels festlegen kann. SystemColors.HighlightBrushKey ändert jedoch korrekt die Hintergrundfarbe der Hervorhebung (das ist jedoch nicht das, was ich will), und wenn ich versuche, SystemColors.HighlightTextBrushKey zu verwenden, von dem ich dachte, er würde die Textfarbe eines hervorgehobenen Elements ändern, passiert nichts (die Farbe ändert sich nicht).
Beispiel für bearbeiteten Code:
var combo = new ComboBox();
Func<double, object> build = d =>
{
var grid = new Grid();
grid.ColumnDefinitions.Add(new ColumnDefinition {Width = GridLength.Auto});
var label = new Label {Content = d};
grid.Children.Add(label);
Grid.SetColumn(label, 0);
var comboBoxItem = new ComboBoxItem {Content = grid, Tag = d};
return comboBoxItem;
};
combo.Items.Add(build(0.5));
combo.Items.Add(build(1));
combo.Items.Add(build(2));
...
Ich habe es versucht:
combo.Resources.Add(SystemColors.HighlightBrushKey, Brushes.Green); // this does set the back to green (but is not what I want)
combo.Resources.Add(SystemColors.HighlightTextBrushKey, Brushes.White); // this does not change the text colour to white it stays as black
Ich bin für jede Hilfe dankbar, danke.