将Combobox控件绑定到DataGrid中的单独源

我试图在DataGrid中使用一个ComboBox,允许用户选择来自不同表的值。 我使用ViewModel类作为DataContext,它包含一个用于终端的ObservableCollection和另一个用于TerminalTypes的ObservableCollection。

网格上的绑定很好,所有行都已填充,DataGridTextColumns都显示正确的数据,但我的ComboBox是空的。

我知道我试图绑定到的ObservableCollection已经填充了,如果我将ComboBox移到DataGrid之外,它会按预期工作。

          

显然,当部分DataGrid时,ComboBox上的绑定行为是不同的,但我有点难过为什么?

有人可以帮我理解我做错了什么吗?

绑定行为是相同的。 然而,DataConmplate中的DataConmplate由ItemsControl设置为当前项,在您的情况下,这是Terminals -collection的成员。 因此,找不到TerminalTypes集合(除非您在项目上也实现它)。

你可以做的是在你的Binding中使用相对来源。 有了这个,您可以导航到DataGrid的DataContext,然后访问您的TerminalTypes -Collection:

  

希望这有帮助。 如果没有,请发表评论。

你应该看看Aran Mulholland的答案 。

它有一个很好的使用DataGridComboBoxColumn的示例

为您的XAML改编了这篇文章

   

这是我在我的小测试项目中最终得到的结果,我正在调整它以便在正确的代码中使用。