Справочная информация:
Я создаю пользовательский список, в котором есть радио-кнопки для каждого элемента списка, поэтому по сути это будет RadioButtonList. Элемент управления полностью создан в коде. На данный момент элемент управления отображается и ведет себя правильно и поддерживает 2 ориентации (горизонтальная / вертикальная). В списке используется ItemTemplate, представляющий собой StackPanel с RadioButton и TextBlock.
До сих пор я был в состоянии предотвратить изменение цвета фона элемента при выборе элемента с помощью стиля, который устанавливает его прозрачный фон.
Я хотел бы сделать то же самое для цвета переднего плана.
По сути, режим выбора в ListBox является одиночным, и когда элемент выбран, я хочу, чтобы он отображался только с помощью RadioButton.
Я использую следующий код для установки ItemContainerStyle:
System.Windows.Style style =
new System.Windows.Style(typeof(System.Windows.Controls.ListBoxItem));
System.Windows.Media.SolidColorBrush brush =
new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Transparent);
style.Resources.Add(System.Windows.SystemColors.HighlightBrushKey, brush);
TextBlock моего шаблона создается с использованием System.Windows.FactoryFrameworkElement, например:
System.Windows.FrameworkElementFactory factoryTextBlock =
new System.Windows.FrameworkElementFactory(typeof(System.Windows.Controls.TextBlock));
factoryTextBlock.SetBinding(System.Windows.Controls.TextBlock.TextProperty, new System.Windows.Data.Binding("Description"));
factoryStackPanel.AppendChild(factoryTextBlock);
Затем FactoryTextBox добавляется к FactoryStackPanel и устанавливается как шаблон элемента ListBox.
В данный момент у меня установлен цвет фона на Прозрачный, когда выбран элемент. Поскольку текст по умолчанию настроен на белый цвет, он визуально исчезает при выборе элемента. Я ищу способ установить цвет на переднем плане текстового блока, когда он выбран. На данный момент это может быть черный, но в конечном итоге он будет ссылаться на цвет шрифта на более высоком уровне.