组合框中的WPF SelectedValue(当它被数据绑定到表时)
本文关键字:数据绑定 WPF SelectedValue 组合 | 更新日期: 2023-09-27 18:27:16
我对wpf和数据绑定有点陌生,我一直在做这件事。
所以基本上我有一张EyeColors和EyeColorId的表格。Eye Color Id是Person表的外键。
我创建了一个组合框,它绑定到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}
。这行得通吗?我假设您的tblEyeColorViewSource
是CollectionViewSource
,那么该代码不应该是:吗
DataContext="{Binding Source={StaticResource tblEyeColorViewSource}}"
无论哪种方式,如果将ComboBox.ItemsSource
设置为{Binding}
,那么这意味着您可能没有选择的项绑定到ComboBox.SelectedValue
属性——这对于您想要的内容至关重要。