Δυστυχώς, έχεις φτάσει στα όρια αυτής της τεχνικής. Το πρόβλημα είναι στο ότι χρησιμοποιείς το control προγραμματιστικά, για να κάνεις πράγματα που κάνει ο χρήστης μέσα από το UI πράγμα που συνεπάγεται ότι περιορίζεσαι από τα properties και τα methods που σου δίνει το control. Επίσης, αν κάποια στιγμή χρειαστεί να αντικαταστήσεις το control με κάποια άλλο, έχεις αρκετή δουλειά να κάνεις για να ξαναπαίξει ο κώδικας. Το σωστό είναι να κάνεις bind το control πάνω σε κάποιο object που να λειτουργεί ως ενδιάμεσος ανάμεσα στο control και τα data. Ειδικά, το WPF παρέχει πολύ πλούσια υποστήριξη data-binding και μπορείς να το εκμεταλλευτείς αυτό για να κάνεις bind σε ένα δικό σου object που να κάνει ακριβώς αυτά που θες.
Για παράδειγμα, αν έχεις ένα collection από Orders, μην το κάνεις bind απ' ευθείας στο DataGrid, φτιάξε μια κλάση που να έχει ως property ένα ObservableCollection<Order> και κάνε bind το control πάνω σε αυτό. Επίσης, τυπικά βάζεις κι ένα property SelectedOrder ώστε να το κάνεις bind με το SelectedItem του control και να ξέρεις τι έχει επιλέξει ο χρήστης. Μετά βάλε methods ώστε να γίνεται το navigation όπως θες, να κάνεις validation, να κάνεις sorting και filtering, κλπ, κλπ.
Γενικά, σε ένα post είναι εξαιρετικά δύσκολο να καλυφθεί το θέμα του Data Biding στο WPF. Ψάξε on-line έχοντας κατά νου αυτά που σου είπα, δηλαδή απέφυγε οτιδήποτε λέει για το πως κάνεις databind κάτι που έρχεται κατευθείαν από τη βάση. Κάνε ένα βήμα πίσω και αφιέρωσε λίγο χρόνο για να μάθεις την τεχνολογία και κατόπιν ξεκίνα πάλι.
Vir prudens non contra ventum mingit