【发布时间】:2011-09-01 11:24:15
【问题描述】:
我有一个组合框,我希望它的项目是位于 DataGrid 上的列数据。无论如何将 Combobox itemsource 设置为 DataGrid 的特定列?
现在我正在迭代 DataGrid 的每一行,获取字段的数据并将它们添加到 Combobox,但这意味着我必须清除所有项目并在每次修改 DataGrid 时重复。
【问题讨论】:
我有一个组合框,我希望它的项目是位于 DataGrid 上的列数据。无论如何将 Combobox itemsource 设置为 DataGrid 的特定列?
现在我正在迭代 DataGrid 的每一行,获取字段的数据并将它们添加到 Combobox,但这意味着我必须清除所有项目并在每次修改 DataGrid 时重复。
【问题讨论】:
您可以设置 ItemsSource 和 DisplayMemberPath 属性:
comboBox1.ItemsSource = dataGrid1.ItemsSource;
comboBox1.DisplayMemberPath = "ColumnName";
【讨论】:
我认为您采取了错误的方法。您的数据网格必须绑定到对象集合。我想您可以通过提取所需字段(例如使用 linQ)来构建另一个集合,并将这个新集合公开给您的视图,以便您可以绑定您的组合框。
如果您想保持第二个集合的更新,请将您的第一个主集合设为 ObservableCollection,这样您就可以订阅 CollectionChanged 事件。在事件处理程序中,只需管理组合框源集合中的添加和删除。
【讨论】: