Master-Detail Binding
We've seen binding to a single object. We've seen binding to a single list of objects. Another very popular thing to do is to bind to more than one list, especially related lists. For example, if you're showing your users a list of customers and then, when they select one, you'd like to show that customer's related orders, you'll want master-detail binding.
Master-detail binding is a form of filtering, where the selection in the master list (e.g., customer 452) sets the filtering parameters for the associated detail data (e.g., orders for customer 452).
In our discussion thus far, we don't have customers and orders, but we do have families and people, which we could further formalize as shown in Example 7-44.
Example 7-44. Master-detail data for binding
public class Person { string name;
public string Name {
get { return name; }
set { name = value; }
}
int age;
public int Age {
get { return age; }
set { age = value; }
}
}
public class People : ObservableCollection<Person> {}
public class Family {
string familyName;
public string FamilyName {
get { return familyName; }
set { familyName = value; }
}
People members;
public People Members {
get { return members; }
set { members = value; }
}
}
public class Families : ObservableCollection<Family> {}In Example 7-44, we've got
our familiar Person class with
Name and Age properties, collected into a familiar
People collection. Further, we have a
Family class with a FamilyName property and a Members property of type People ...