[英]Binding DataGrid.SelectedItem to the Displayed Member of a ComboBox
我有一个DataGrid
,其中包含一个People
列表,每个列表都有一个与之关联的主管。 在DataGrid
下面的ComboBox
中列出了所有可能的Supervisors
。
我想发生的是,当用户在DataGrid
选择一个Person
时,会自动从ComboBox
选择适当的Supervisor
。
我曾尝试使用类似的东西;
personSupervisorComboBox.SelectedItem = selectedPerson.SupervisorName;
和
personSupervisorComboBox.DisplayMemberPath= selectedPerson.SupervisorName;
但是到目前为止,从ComboBox
选择正确的成员还没有任何作用。 有没有一种方法可以将DataGrid.SelectedItem
绑定到ComboBox.SelectedItem
以便当用户从DataGrid
选择Person
时,其主管可以正确显示在ComboBox
?
编辑:
XAML
<ComboBox Grid.Row="3" Grid.Column="3" x:Name="personSupervisorComboBox" Margin="5" FontSize="14" DisplayMemberPath="FullName" VerticalContentAlignment="Center" SelectedValue="ID"/>
代码隐藏(到目前为止,我已经尝试过)
personSupervisorComboBox.Text = selectedPerson.SupervisorName;
您可能在涉及CollectionViewSource的解决方案之后-这是一个特殊的收集容器,该容器跟踪当前项目,以便可以在多个项目之间共享。 请注意下面ComboBox中的特殊绑定语法:使用“ /”指定此绑定相对于Collection View的“ CurrentItem”。 也就是说,它绑定到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" />
[免责声明:我尚未编译/测试此代码段,请记入Typos]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.