Dass Databinding in WPF mächtig und flexibel ist, hat sich mittlerweile herumgesprochen.
Das geht soweit, dass manche Architekten am liebsten die gesamte UI über DataBinding
steuern würden :)
Aber taugt Databinding auch für die Navigation in relationalen DataSets?
Wie zu sovielen Themen rund um DataBinding Fragen weiss Beatrice Costa Rat: die folgenden
beiden Posts beschreiben ziemlich ausführlich, wie man ADO.net DataTables anbinden
und synchronisieren kann.
How do I bind to ADO.net
Independent dataviews with ADO.net
Vor allem die Kommentare sind lesenswert, dort steckt einiges an wertvollen Tips.
Interessant finde ich, dass man über Relationen mit Binding-Expressions in der Form
Tabellenname/NamederRelation sehr einfach Master-Detail Szenarien abbilden kann.
WPF findet dazu die passende DataView für die Child-Tabelle.

Hier eine kleine Beispielanwendung, die ein einfaches DataSet als
Objektmodell benutzt:

Der Trick ist, dass man nun den Namen der Relation einfach in seinen Binding-Expressions
benutzen kann.
Hinter den Kulissen stellt WPF eine eigene Form von CollectionView zur Verfügung
(BindingListCollectionView), die speziell an DataViews angepasst ist. Setzt man z.B. die
SortDescription auf einer BindingListCollectionView, wird dadurch die "Sort" Property in
der DataView gesetzt.
Die Auswahl der DetailsView-Items ist in meinem Beispiel über "IsSynchronizedWithCurrentItem=True"
direkt mit der Selektion in der jeweiligen ListBox verknüpft. Das muss natürlich nicht so sein, es
ist genauso möglich das CurrentItem in der CollectionView manuell zu setzen, dafür bietet sich
ein Command an.
CollectionViews und Commands sind Themen für weitere Posts :)
Happy coding,
Florian