这真让我抓狂。我有一个 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 和一个生活区域列表:LifeAreaList。我希望用户能够为目标选择不同的生活领域。生命区域的名称也需要是显示的值。
编辑
解决方案是必须将 DataGridComboBoxColumn 的 ItemsSource 设置为静态资源。另一种选择是通过代码设置 ItemsSource。
最后我有:
<DataGridComboBoxColumn x:Name="_lifeAreaComboBoxColumn" SelectedItemBinding="{Binding LifeArea}" DisplayMemberPath="Name" Header="Life Area">
在后面的代码中,我设置了 ItemsSource:
_lifeAreaComboBoxColumn.ItemsSource = LifeAreaDAL.GetLifeAreas();
当我有机会时,我会将其转换为静态资源。