将多个控件绑定到组合框中选定的对象

本文关键字:对象 组合 控件 绑定 | 更新日期: 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.

将多个控件绑定到组合框中选定的对象

的SelectionChanged事件之外,还有其他方法吗?

你想要的文本框tbOperator显示Operator的选定项目的ComboBox cbStudents和另一个组合框包含Subjects的选定项目的ComboBox 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" />

cbSubjects绑定路径错误。你应该把它设置为SelectedValue.Subjects:

<ComboBox Margin="12,123,0,0" Name="cbSubjects" VerticalAlignment="Top"  ItemsSource="{Binding ElementName=cbStudents, Path=SelectedValue.Subjects}" DisplayMemberPath="SubjectName" />