繁体   English   中英

WPF SelectedValue在组合框中的数据绑定到表时

[英]WPF SelectedValue in a combobox when it is databound to a table

我是wpf和数据绑定的新手,对此我一无所知。

所以基本上我有一个EyeColors和EyeColorIds表。 眼睛颜色ID是人员表的外键。

我创建了一个绑定到EyeColor表的组合框,并在其中填充了可能的眼睛颜色。 但是,当用户编辑一个人时,我希望已经选择了该人的眼睛颜色。 我怎样才能做到这一点?

 <ComboBox
     DataContext="{StaticResource tblEyeColorViewSource}"
     Height="23"
    HorizontalAlignment="Left" 
        Margin="95,125,0,0" 
        Name="EColorBox" 
        VerticalAlignment="Top" 
        Width="120" 
        DisplayMemberPath="EyeColor"
        ItemsSource="{Binding}" />

那是我的组合框xaml。 当构造窗口时,获得特定人的眼睛颜色。

因此,在创建编辑窗口之前,我先从数据网格中获取数据并创建一个人员对象

然后我构造编辑窗口

  public AddEditForm(PeopleManagerController pmc, Person p)
    {
        controller = pmc;
        InitializeComponent();
        personToAE = p;

        FnameText.DataContext = personToAE;
        LnameText.DataContext = personToAE;
        datePicker1.DataContext = personToAE;
        datePicker1.Text = personToAE.DateOfBirth;
        AddEditButton.Content = "Edit";
    }

然后,当用户单击“编辑”按钮时,它将把要编辑的人发送到用于SQL事务的控制器类。

至于xaml,我只是创建控件并将它们绑定到person对象的属性。 我希望将人的眼睛颜色属性编辑为组合框的选定值。

当您没有提供所有相关信息时,这有点困难,所以我将不得不假设一些事情。

<ComboBox DataContext="{StaticResource tblEyeColorViewSource}" Height="23"
HorizontalAlignment="Left" Margin="95,125,0,0" Name="EColorBox" VerticalAlignment="Top" 
Width="120" DisplayMemberPath="EyeColor" ItemsSource="{Binding}" SelectedValuePath="Id" 
SelectedValue={Binding CurrentPerson.EyeColourId}" />

请注意,必须将SelectedValuePath属性设置为tblEyeColorViewSource数据对象中EyeColourId属性的确切名称,无论可以调用什么名称。 这意味着当选择一个值时,我们希望从该属性中接收该值……就像DisplayMemberPath属性一样,但是该属性指定当选择一个值时将显示哪个属性。

现在,必须将SelectedValue属性设置为引用当前Person对象的对象以及我们要设置的属性。

我刚刚注意到,您已经将ComboBox.DataContext设置为{StaticResource tblEyeColorViewSource}并将其ComboBox.ItemsSource{Binding} 那还行吗? 我假设您的tblEyeColorViewSourceCollectionViewSource ,所以该代码不应为:

DataContext="{Binding Source={StaticResource tblEyeColorViewSource}}" 

无论哪种方式,如果将ComboBox.ItemsSource设置为{Binding} ,则意味着您可能没有选定的项目绑定到ComboBox.SelectedValue属性-这对于您想要的内容至关重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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