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

时间:2013-04-12 06:10:12

标签: c# .net wpf binding

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

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事件之外,还有办法吗?

2 个答案:

答案 0 :(得分:4)

您希望TextBox tbOperator显示ComboBox Operator的SelectedItem的cbStudents,而另一个ComboBox包含ComboBox的SelectedItem的Subjects { {1}}。

然后以下XAML应该做你想做的事情(删除了无法解决你的问题的

cbStudents

答案 1 :(得分:0)

cbSubjects的绑定路径错误。您应该将其设置为SelectedValue.Subjects

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