3

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

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

现在我担心的是,每当我更改 cbStudents 中的选择时,在这种情况下,其他控件也应该更改其相应的值。根据上面给出的代码,只要 cbStudents 中的选择更改 tbOperator 中的文本正在更改,我也想为 cbSubjects 实现相同的内容。除了有 cbStudents 的 SelectionChanged 事件之外,还有其他方法吗?

4

2 回答 2

4

您希望 TextBoxtbOperator显示OperatorComboBox 的 SelectedItem 的cbStudents,而另一个 ComboBox 包含 ComboBoxSubjects的 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" />
于 2013-04-12T06:14:27.640 回答
0

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

<ComboBox Margin="12,123,0,0" Name="cbSubjects" VerticalAlignment="Top"  ItemsSource="{Binding ElementName=cbStudents, Path=SelectedValue.Subjects}" DisplayMemberPath="SubjectName" />
于 2013-04-12T06:14:34.773 回答