DataGridComboBoxColumn 根据另一个 DataGridComboBoxColumn 的选定项设置 ItemSource

DataGridComboBoxColumn set ItemSource based on selected item of another DataGridComboBoxColumn

我的数据网格 ClassificationComboBox 和 DisclosureNoteComboBox 中有 2 个 DataGridComboBoxColumn。 第一个工作正常,我看到它填充了数据。 我想要的是,当在第一个中选择一个项目时,即 ClassificationComboBox ,我希望第二个显示第一个中所选项目的数据列表。 ClassificationComboBox 中的所选项目属于分类类型,它有一个名为 ClassificationRecords 的列表,我想将其填充到 DisclosureNoteComboBox 中。

这是我的 XML 的片段。

              <materialDesign:DataGridComboBoxColumn Header="Classification" IsEditable="False" x:Name="ClassificationComboBox"
                                                       ItemsSourceBinding="{Binding ElementName=TrialBalanceViewName, Path=Report.Classifications}"
                                                       DisplayMemberPath="Name"
                                                       SelectedValuePath="Id" 
                                                       SelectedValueBinding="{Binding ClassificationRecord.ClassificationId}"
                                                       />
                <materialDesign:DataGridComboBoxColumn Header="Disclosure Note" IsEditable="False" x:Name="DisclosureNoteComboBox"
                                                       ItemsSourceBinding="{Binding ElementName=ClassificationComboBox, Path=SelectedValueBinding.ClassificationRecords}"
                                                       SelectedValuePath="DisclosureNote"
                                                       SelectedValueBinding="{Binding ClassificationRecord.DisclosureNote}"
                                                       />

我怀疑我的问题是如何为第二个(尤其是路径)构建 ItemsSourceBinding。我认为这是错误的,但我不确定如何调用第一个的选定项目并将其上的 ClassificationRecords 调用为第二个的 ItemSource

ItemsSourceBinding="{Binding ElementName=ClassificationComboBox, Path=SelectedValueBinding.ClassificationRecords}"

您不能这样处理问题,因为数据网格列定义不包含您需要的数据。它们是对 DataGrid 如何显示其项目的说明,而不是项目本身的容器。

要解决这个问题,您需要绑定到数据模型,而不是列定义。

  • A 列:绑定到 属性 foo
  • B 列:绑定到 属性 bar ItemsSource 由 属性 foo.
  • 填充