我有一个学生班级,如下所示

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" />

08-26 19:08