【发布时间】:2011-04-03 13:29:25
【问题描述】:
这快把我逼疯了。我有一个 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();
如果有机会,我会将其转换为 StaticResource。
【问题讨论】:
-
您的 DataGridComboBoxColumn 中不需要 DisplayMemberPath 吗?
-
我已经尝试过,但下拉菜单中没有显示任何内容。
-
不是说这样就解决了,但是
GridComboBoxColumn怎么知道选择了哪个生活区呢?您还需要将SelectedItem绑定到某个东西。 -
您是否检查过是否有任何绑定错误并且 PropertyChanged 被触发
标签: wpf mvvm datagrid datagridcomboboxcolumn