将DataGrid.SelectedItem绑定到ComboBox的显示成员

时间:2016-05-10 08:00:58

标签: c# wpf data-binding combobox datagrid

我有一个DataGrid,其中包含People列表,每个列表都有一个与之关联的主管。所有可能的Supervisors都列在ComboBox下面的DataGrid

我希望发生的是,当用户在Person中选择DataGrid时,会自动从Supervisor中选择相应的ComboBox

我尝试过使用像

这样的东西

personSupervisorComboBox.SelectedItem = selectedPerson.SupervisorName;

personSupervisorComboBox.DisplayMemberPath= selectedPerson.SupervisorName;

但是从ComboBox中选择正确的成员还没有任何效果。有没有办法可以将DataGrid.SelectedItem绑定到ComboBox.SelectedItem,这样当用户从Person中选择DataGrid时,他们的主管就会在ComboBox中正确显示}?

编辑:

XAML

<ComboBox Grid.Row="3" Grid.Column="3" x:Name="personSupervisorComboBox" Margin="5" FontSize="14" DisplayMemberPath="FullName" VerticalContentAlignment="Center" SelectedValue="ID"/>

Code-Behind(我到目前为止已尝试过)

personSupervisorComboBox.Text = selectedPerson.SupervisorName;

1 个答案:

答案 0 :(得分:0)

您可能在涉及CollectionViewSource的解决方案之后 - 这是一个特殊的收集容器,它跟踪当前项目,以便可以在多个项目之间共享。 请注意下面ComboBox中的特殊绑定语法:使用&#34; /&#34;指定此绑定是相对于&#39; CurrentItem&#39;集合视图。也就是说它绑定到collectionViewSource中当前所选项的主管,该主管与datagrid中当前选定的项同步

<Window.Resources>
    <CollectionViewSource x:Name="cvsPeople" Source="{Binding whereMyPeopleAre}" />
</Window.Resources>

<!-- ... -->

<ComboBox ItemsSource="{Binding Source={StaticResource cvsPeople}}" SelectedItem="{Binding /Supervisor, Source={StaticResource cvsPeople}}"  />

<!-- ... -->

<DataGrid ItemsSource="{Binding Source={staticResource cvsPeople}}" IsSynchronizedWithCurrentItem="True" />

[免责声明:我还没有编译/测试过这段代码,请注明错别字]