Wpf 无法使级联组合框工作

Wpf 无法使级联组合框工作,wpf,data-binding,combobox,cascadingdropdown,Wpf,Data Binding,Combobox,Cascadingdropdown,下面是我创建级联组合框的代码。我正在尝试根据为段名称Combox1选择的值填充族ComboboxCombox2。我可以使用静态资源填充第一个组合,但第二个组合显示为空白。 我正在对第一个combobox的selection change事件调用名为FillComboBoxFamilyDataSegmentCode的方法 XAML代码: <Grid Height="142" HorizontalAlignment="Left" Margin="49,113,0,0" Name="grid3"

下面是我创建级联组合框的代码。我正在尝试根据为段名称Combox1选择的值填充族ComboboxCombox2。我可以使用静态资源填充第一个组合,但第二个组合显示为空白。 我正在对第一个combobox的selection change事件调用名为FillComboBoxFamilyDataSegmentCode的方法

XAML代码:

<Grid Height="142" HorizontalAlignment="Left" Margin="49,113,0,0" Name="grid3"     VerticalAlignment="Top" Width="904">
                <ComboBox Height="23" HorizontalAlignment="Left" Margin="35,26,0,0"    Name="comboBox1" VerticalAlignment="Top" Width="205" ItemsSource="{Binding Source={StaticResource tblSegmentViewSource}}"  DisplayMemberPath="Segment Name" SelectedValuePath="Segment Code" SelectionChanged="comboBox1_SelectionChanged"/>
                <ComboBox Height="23" HorizontalAlignment="Right" Margin="0,26,395,0"    Name="comboBox2" VerticalAlignment="Top" Width="205" />


  <Window.Resources>
  <CollectionViewSource x:Key="tblSegmentViewSource" Source="{Binding Path=TblSegment,    Source={StaticResource brickDataset}}" />
    <CollectionViewSource x:Key="tblFamilyViewSource" Source="{Binding Path=TblFamily,  Source={StaticResource brickDataset}}" />

我正在用桌子砸我的头。请救救我

您没有设置comboBox2的ItemsSource。DataContext只会影响其上的所有绑定语句。如果您将ItemsSource设置为正确的表,而不是DataContext,那么它将使您走上正确的路径:

if (objDs.Tables[0].Rows.Count > 0)
{
    MessageBox.Show("Here I am");
    comboBox2.ItemsSource = ((IListSource)objDs.Tables[0]).GetList(); // set the ItemsSource instead of the DataContext
    comboBox2.DisplayMemberPath = "Family Name";
    comboBox2.SelectedValue = "Family Code";
}

请注意,当您设置ItemsSource时,将文本插入Items属性的行将失败,因为您不能同时使用ItemsSource和Items。

因此,您得到了MessageBox,但组合没有信息?我看到您正在设置combobBox2的DataContext,但您没有将任何内容绑定到该上下文。非常感谢您的回复。当你说将itemsource设置为“correct Table”时,你指的是“ObjDs”数据集,你指的是什么意思?我的意思是你要将数据集中想要的表分配给它。我更新了答案,为您提供了一个示例。谢谢。当我这样做时,它只显示第一行--comboBox2.ItemsSource=objDs.Tables-;并在write-comboBox2.ItemsSource=objDs.Tables[0]--时引发异常;例外情况是“存在显式转换,无法将system.data.datatable转换为system.Collections.IEnumerable”抱歉,我忘记了datatable不实现IEnumerable。您必须将该表强制转换为IListSource,并调用GetList,因为该表显式地实现了接口。当您在XAML中使用CollectionViewSource时,绑定引擎会在后台为您执行此操作。我想知道是否可以像在WinForms中那样使用用户界面使它们工作
if (objDs.Tables[0].Rows.Count > 0)
{
    MessageBox.Show("Here I am");
    comboBox2.ItemsSource = ((IListSource)objDs.Tables[0]).GetList(); // set the ItemsSource instead of the DataContext
    comboBox2.DisplayMemberPath = "Family Name";
    comboBox2.SelectedValue = "Family Code";
}