Это сводит меня с ума. У меня есть DataGrid, который имеет DataGridComboBoxColumn, который я хочу, чтобы пользователь мог использовать для выбора. Это основная схема моей сетки.
<DataGrid ItemsSource="{Binding GoalList}" DockPanel.Dock="Bottom" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridComboBoxColumn ItemsSource="{Binding LifeAreaList}" Header="Life Area"/>
<DataGrid.Columns>
</DataGrid>
DataGrid привязан к коллекции объектов типа Goal. Каждая цель имеет свойство типа LifeArea. Каждая LifeArea имеет свойства LifeAreaId и Name.
Контекст данных содержит наблюдаемую коллекцию Goals: GoalList и список областей жизни: LifeAreaList. Я хочу, чтобы пользователь мог выбрать другую жизненную область для цели. Также отображаемое значение должно содержать название области жизни.
EDIT
Решение состоит в том, что ItemsSource для DataGridComboBoxColumn должен быть установлен как статический ресурс. Другой вариант - установить ItemsSource с помощью кода.
В итоге у меня есть:
<DataGridComboBoxColumn x:Name="_lifeAreaComboBoxColumn" SelectedItemBinding="{Binding LifeArea}" DisplayMemberPath="Name" Header="Life Area">
В коде позади я установил ItemsSource:
_lifeAreaComboBoxColumn.ItemsSource = LifeAreaDAL.GetLifeAreas();
Когда я получу шанс, я преобразую это в StaticResource.