将多个控件绑定到组合框中选定的对象
本文关键字:对象 组合 控件 绑定 | 更新日期: 2023-09-27 18:09:00
我有一个学生班级,如下所示
public class Student
{
public string Name { get; set; }
public string Operator { get; set; }
public IList<Subject> Subjects { get; set; }
}
现在我想将这个学生的集合绑定到我的窗口的三个控件,如下所示
<ComboBox Margin="12,28,0,0"
Name="cbStudents"
VerticalAlignment="Top"
ItemsSource="{Binding Path=PersonList}"
DisplayMemberPath="Name"
SelectedValuePath="Operator" />
<TextBox Margin="12,75,0,0"
Name="tbOperator"
VerticalAlignment="Top"
Text="{Binding ElementName=cbStudents,Path=SelectedValue}" />
<ComboBox Margin="12,123,0,0"
Name="cbSubjects"
VerticalAlignment="Top"
ItemsSource="{Binding ElementName=cbStudents, Path=SelectedValue}"
DisplayMemberPath="SubjectName" />
现在我担心的是,每当我改变一个选择在cbStudentsthen在这种情况下,其他控件也应该改变其相应的值。这里根据上面给出的代码,每当cbstudentschange中的选择改变时,toperator中的文本就会改变,我也想为cbSubjects实现相同的代码。除了cbStudents.
你想要的文本框tbOperator
显示Operator
的选定项目的ComboBox cbStudents
和另一个组合框包含Subjects
的选定项目的ComboBox cbStudents
。
<ComboBox Name="cbStudents"
ItemsSource="{Binding Path=PersonList}"
DisplayMemberPath="Name" />
<TextBox Name="tbOperator"
Text="{Binding SelectedItem.Operator, ElementName=cbStudents}" />
<ComboBox Name="cbSubjects"
ItemsSource="{Binding SelectedItem.Subjects, ElementName=cbStudents}"
DisplayMemberPath="SubjectName" />
cbSubjects
绑定路径错误。你应该把它设置为SelectedValue.Subjects
:
<ComboBox Margin="12,123,0,0" Name="cbSubjects" VerticalAlignment="Top" ItemsSource="{Binding ElementName=cbStudents, Path=SelectedValue.Subjects}" DisplayMemberPath="SubjectName" />