DataGrid和Cell-Level ComboBoxes

时间:2012-01-25 17:43:26

标签: wpf datagrid combobox

方案

ComboBox C取决于ComboBox B的选定值,它取决于ComboBox A的选定值。所有这些ComboBox都在DataGrid中。

常见道路障碍:

  1. 用户必须能够添加新行(这需要具有无参数构造函数的ItemsSource项类型)。
  2. 要访问数据库以填充Comboboxes的可用选项列表,当前项目需要将Database Credentials / DataContext传递给构造函数。
  3. 尝试1

    我尝试过使用3个CollectionViewSources,每个ComboBox对应一个(Concept Code Here),但ComboBox的SelectedItem会在其他DataGrid行中自动选中。我需要找到一种方法将CollectionViewSource隔离到每一行。

    我考虑过只将CollectionViewSource数据添加到每个DataGrid项目中,这样我就可以这样绑定它,但我必须访问数据库才能生成CollectionViewSource。

    我也尝试过不像this question中那样共享CollectionViewSource,但是它破坏了3个ComboBoxes和Rows之间的链接。如果我可以将CollectionViewSources设置为在每个DataGrid行中共享而不是在每个DataGrid行之间共享,我认为它会起作用。我找不到办法做到这一点。

    尝试2

    我看过这个问题:How to get cell level ComboBox for WPF DataGrid?

    这可行,但用户需要能够向DataGrid添加行。该问题中的示例代码也使用无参数构造函数。我处于这样一种情况,即访问数据库以填充列表必须传递给构造函数。

    问题

    我该如何正确地做到这一点?

1 个答案:

答案 0 :(得分:1)

绑定到ListObservableCollection,而不是CollectionViewSource

CollectionViewSource跟踪当前项,因此更改一个ComboBox中的值将在所有ComboBox中更改它