Это сводит меня с ума. У меня есть 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.
Контекст данных содержит наблюдаемую коллекцию Целей: GoalList и список Life Areas: LifeAreaList. Я хочу, чтобы пользователь мог выбрать другую область жизни для достижения цели. Также должно отображаться имя области жизни.
ИЗМЕНИТЬ
Решение состоит в том, что ItemsSource для DataGridComboBoxColumn должен быть установлен как статический ресурс. Другой вариант - установить ItemSource через код.
В конце концов я:
<DataGridComboBoxColumn x:Name="_lifeAreaComboBoxColumn" SelectedItemBinding="{Binding LifeArea}" DisplayMemberPath="Name" Header="Life Area">
В коде позади я устанавливаю ItemsSource:
_lifeAreaComboBoxColumn.ItemsSource = LifeAreaDAL.GetLifeAreas();
Когда я получу шанс, я преобразую его в StaticResource.