Похоже, что для выпадающего списка функций вы привязываетесь к внутреннему раскрывающемуся списку значений объекта Modules
и хотите изменить этот список на один элемент ... где его можно выбрать? Это не имеет смысла.
Чтобы устранить проблему, выполните следующие действия:
- Прежде всего, вам нужен список c (неизменный) списка функций, к которым можно привязаться.
- Удалите
Features
из Module
и замените его свойством id, прямо сейчас, чтобы избежать путаницы, назовите его FeatureName
. - Используйте
DataGridComboBoxColumn
, который допускает одно значение быть измененным на основе идентификатора. К сожалению, идентификатор класса Feature
равен Name
. Чтобы быть более реалистичным c, это должно быть числовое поле Id
на Feature
, которое может идентифицировать и ассоциировать этот путь; как упомянуто в # 2, сейчас мы будем называть наш идентификатор FeatureName
, чтобы избежать путаницы.
Шаг 1 Этот шаг устанавливает свойство public
для List<string>
с именем FeatureList
в канале данных вашего окна (или страницы, или элемента управления) (ВМ?), Куда вы загрузите значения идентификатора из всех функций, таких как эти строки: { "Heinzen", "Coolen", "Ein", "Klinen", "Yagermeisters", ... }
снова, этот список из String
с (не Feature
с).
Затем поместите этот список в ресурсы страницы, например,
<Window.Resources>
<CollectionViewSource x:Key="FeatureList"
Source="{Binding FeatureList}" />
</Window.Resources>
Шаг 2 Удалить от Module
public List<Feature> Features { get; set; }
и замените его на public string FeatureName { get; set; }
Шаг 3 Теперь вы замените Frankenstein DataGridTemplateColumn
, где у вас был комбинированный ящик, на более цивилизованным DataGridComboBoxColumn
. Что позволит отображать и редактировать / выбирать значения, которое будет выбирать / отображать функцию.
Поставьте это так:
<DataGridComboBoxColumn Header="Feature"
SelectedItemBinding="{Binding FeatureName, Mode=TwoWay}"
ItemsSource="{Binding Source={StaticResource FeatureList}}"
Width="100" />
Это должно дать вам хорошее начало в вопросе и как правильно использовать комбинированный список.