繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM