我有一个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;
答案 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" />
[免责声明:我还没有编译/测试过这段代码,请注明错别字]