Ευχαριστώ πολύ για την απάντησή σου.
Με κάλυψες απόλυτα στην πρώτη ερώτηση.
Όσον αφορά την δεύτερη ερώτηση:
Έχω ενα button το οποίο γίνεται enable μόνο όταν δεν έχει errors η φόρμα.
Αυτός ο κώδικας είναι στο mainWindow.xaml.cs
private readonly HashSet<ValidationError> errors = new HashSet<ValidationError>();
private Lazy<MainWindowViewModel> viewModel;
void InitializeValidaton() {
viewModel = new Lazy<MainWindowViewModel>();
Validation.AddErrorHandler(this, ErrorChangedHandler);
}
private void ErrorChangedHandler(object sender, ValidationErrorEventArgs e) {
if (e.Action == ValidationErrorEventAction.Added) {
errors.Add(e.Error);
} else {
errors.Remove(e.Error);
}
viewModel.Value.IsValid = !errors.Any();
}
Απο εδώ όλα πάνε καλά.
Το πρόβλημα είναι οτι το property IsValid ενώ παίρνει την πρώτη φορά την σωστή τιμή, μετά όταν ξανακαλείται (λόγω του μηχανισμού Commanding όπως μου είπες) παίρνει λάθος τιμή.
Παίρνει δηλαδή την αρχική του τιμή η οποία για τα bool είναι false.
private bool _isValid;
public bool IsValid {
get { return _isValid; }
set {
_isValid = value;
RaisePropertyChanged("IsValid");
}
}
public ICommand SaveItem {
get { return new RelayCommand(SaveItemExecute,CanSaveItem); }
}
public bool CanSaveItem() {
return IsValid;
}
Η CanSaveItem είναι η μέθοδος που καλείται πάνω απο μία φορά και αλλάζει η τιμή της.
Αυτό φαντάζομαι οτι δεν ειναι φυσιολογικό.
Ή αν έιναι τότε έχω κάποιο λάθος στην εφαρμογή μου.
Ευχαριστώ
αν δεν το θες,
www.antallakseto.gr