Я создал шаблон ComboBox
, который в основном действует как простая цветовая палитра. Он заполнен списком SolidColorBrush
объектов.
У меня также есть некоторые данные, которые содержат шестнадцатеричное значение текущего цвета, и преобразователь, который преобразует шестнадцатеричное значение в SolidColorBrush
.
Я пытаюсь установить свойство SelectedItem
для ComboBox
на основе цвета из моего источника данных. Поскольку моя комбинация заполнена объектами типа SolidColourBrush
, а мой преобразователь привязки возвращает SolidColorBrush
, я предположил, что это будет так же просто, как сказать:
SelectedItem="{Binding Color, Converter={StaticResource StringToBrush}}"
Однако... не работает :(
Я проверил, что привязка работает за кулисами, используя точно такое же значение для свойства Background файла ComboBox
.
Итак, ясно, что я не могу просто сказать SelectedItem = [что-то], где это [что-то] в основном является объектом, равным элементу, который я хочу выбрать.
Как правильно это сделать? Конечно, это возможно в стиле только для XAML с использованием привязки, и мне не нужно делать какой-то неприятный С#, перебирая все элементы в поле со списком, пытаясь найти совпадение (это кажется ужасно старой школой)...?
Equals
функцииSolidColorBrush
. По умолчаниюEquals
при сравнении двух элементов проверяет, совпадают ли ссылки. Вы можете изменить это поведение и сделать так, чтобыEquals
также проверяло, например, совпадает ли цветовой код. Проверьте этот ответ для справки. - person Athafoud   schedule 12.12.2016