我有一个学生班,如下所示
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事件之外,还有办法吗?
答案 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" />