У меня проблема с подсветкой ComboBox, которая показывает черный текст на синем фоне, когда текст для выделения должен быть белым.
У меня есть примеры ComboBox, которые используют ComboBoxItems, где Content - это строка. В этом случае поле со списком ведет себя так, как и ожидалось - когда поле со списком выпадает, если вы выделите элемент, он отображает белый текст на синем черном фоне.
Однако у меня есть пример ComboBox, где Содержимое каждого ComboBoxItem представляет собой Grid (Grid содержит 2 столбца - первый содержит текст, а второй строку - это комбинированный список толщины линий). В этом случае, когда выпадающий список выпал, при выделении элемента он отображает черный текст на синем фоне вместо белого текста. Примечание: даже если я удалю часть строки и у меня будет только один столбец с текстом, я все равно вижу проблему.
Самое близкое, что я пришел к решению этой проблемы, - это добавление ресурса в комбинированный список для SystemColors.HighlightBrushKey и SystemColors.HighlightTextBrushKey, где я устанавливаю цвет кисти. Однако SystemColors.HighlightBrushKey правильно меняет задний цвет подсветки (хотя это не то, что мне нужно), и когда я пытаюсь использовать SystemColors.HighlightTextBrushKey, который, как я думал, изменит цвет текста выделенного элемента, ничего не происходит (цвет не меняется).
Пример отредактированного кода:
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));
...
Я пытался:
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
Любая помощь приветствуется, спасибо.