我有一个学生班级,如下所示
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中更改选择时,其他控件也应也更改其相应的值。在这里,根据上面给出的代码,每当cbStudents中的选择更改tbOperator中的文本时,我也想为cbSubjects实现相同的内容。除了具有cbStudents的SelectionChanged事件之外,还有其他解决方法。
最佳答案
您希望TextBox tbOperator
显示ComboBox Operator
的SelectedItem的cbStudents
,而另一个ComboBox包含ComboBox Subjects
的SelectedItem的cbStudents
。
然后,以下XAML应该做您想要的(删除了不相关的代码来解决您的问题):
<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" />