В ItemTemplate DataContext является элементом комбинированного списка. Это означает, что {Binding color}
ищет свойство с именем color
в элементе списка.
color
является собственностью вашей основной модели представления, я так понимаю. Но каждый объект в Parts
отображается с использованием этого DataTemplate. Если каждый из этих объектов не имеет свойства с именем color
, вы ничего не привязываете. Тот же принцип применяется в шаблоне ячейки DataGrid.
Так что вам нужно найти основную модель представления. Если вы находитесь в Window, то это, вероятно, viewmodel Window, который будет DataContext содержащего элемента управления. Так что попробуйте это для выпадающего списка:
Fill="{Binding DataContext.color, RelativeSource={RelativeSource AncestorType=ComboBox}}"
Если у вас есть комбинированный список в шаблоне ячейки DataGrid, вам понадобится AncestorType=ComboBox
- продолжайте идти по цепочке, пока не убедитесь, что получаете элемент управления с правильным DataContext.
Я согласен с Эрно в том, что не обязательно выражать цвет в виде строки, но строка будет работать.
Лучше было бы сделать свойство viewmodel специализированным типом перечисления, который выражает семантику любого цвета, сообщаемого пользователю: Info / Warning / Error, OnTime / Early / Delayed - такого рода вещи. А затем преобразовать это в кисть в представлении с помощью преобразователя значений или триггеров.