Γιατί αυτή η μανούρα? Όλα τα Controls σχεδόν τόσο στα Windows Forms όσο και στο WPF έχουν το Enabled και το Visible property με τα οποία μπορείς ανετότατα να ενεργοποιήσεις/απενεργοποιήσεις κουμπιά και άλλα controls. Μήπως προσπαθείς να περάσεις κώδικα MFC σε .ΝΕΤ?
Εξάλλου, ο έλεγχος των δεδομένων πρέπει να γίνεται πάντα πριν τα στείλεις στη βάση. Δεν μπορείς να αρκεστείς στο ότι το UI έχει εμποδίσει την εισαγωγή λάθος δεδομένων. Γι αυτό και το .NET σου δίνει (πάλι και στα δύο UI Frameworks) validators οι οποίοι κοιτάνε τα validations που έχεις ορίσει εσύ στο data model σου για να σου πουν αν τα δεδομένα είναι σωστά ή όχι.
Ειδικά τώρα για το WPF, η όλη σχεδίαση είναι λάθος. Η σωστή σχεδίαση είναι να χρησιμοποιήσεις το MVVM pattern και να ξεχωρίσεις εντελώς το UI (View) από το μοντέλο πίσω του (ViewModel). Αυτά πρέπει να είναι ανεξάρτητα μεταξύ τους. Η σύνδεση δεδομένων και UI όπως και εντολών με controls γίνεται μέσω του WPF binding. Μπορείς άνετα να κάνεις bind τα Enabled, Visible properties οποιουδήποτε control σε properties στο ViewModel οι οποίες θα γίνονται true ανάλογα με το αν είναι εντάξει τα δεδομένα ή όχι.
Μάλιστα, κάποια frameworks όπως το Caliburn.Micro χρησιμοποιούν conventions για να κάνουν "αυτόματα" αυτή τη σύνδεση. Αν π.χ. έχεις ένα κουμπί με το όνομα Save, το Caliburn.Micro θα συνδέσει την Enabled με την CanSave property στο ViewModel σου.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos