2012-03-07 4 views
0

Je cherche un bon exemple d'application MVVM qui utilise une grille modifiable pour afficher des entités. J'ai déjà essayé de lier une grille à une ObservableCollection d'entités qui fonctionnaient sans problème. La seule chose que je voulais faire est de lier un bouton de sauvegarde de manière à ce qu'il soit désactivé lorsqu'il y a des erreurs de validation dans le modèle.Grille modifiable MVVM Entity Framework exemple d'application

Répondre

1

Peut-être quelque chose comme ça:

class MyCustomCommand : ICommand 
    { 
     public MyCustomCommand(ObservableCollection<object> collection) 
     { 
      collection.CollectionChanged += (s, e) => 
       { 
        if (CanExecuteChanged != null) 
         CanExecuteChanged(this, new EventArgs()); 
       }; 
     } 

     public bool CanExecute(object parameter) 
     { 
      return your condition; 
     } 

     public event EventHandler CanExecuteChanged; 

     public void Execute(object parameter) 
     { 
      ... 
     } 
    } 
+0

Merci pour votre réponse. Si je voulais utiliser Caliburn.Micro pour ce faire, y aurait-il une meilleure façon d'obtenir ce comportement? Désolé si cette question n'a aucun sens, mais je viens de commencer avec MVVM/Caliburn et essayer de m'habituer à ce style. – Eggi

+1

Je ne connaissais pas le cadre micro caliburn mais il semble qu'ils utilisent des actions pour réaliser cette tâche: http://devlicio.us/blogs/rob_eisenberg/archive/2010/07/17/caliburn-micro-soup-to-nuts- pt-3-all-about-actions.aspx – Jonas

+0

Caliburn Micro élimine le besoin d'ICommand. –

1

Vous devez lier la propriété de commande de votre bouton avec une propriété ICommand dans votre viewmodel. Dans la méthode CanExecute, vous pouvez vérifier s'il existe des erreurs de validation. Si oui, renvoyez False else return True. Le bouton sera automatiquement activé/désactivé.

+0

J'ai actuellement toutes les entités ObservableCollection. Donc ma question est comment puis-je avoir la méthode qui désactive le bouton appelé quand quelque chose dans cette collection change? Et même si c'est même une bonne idée de lier une grille de cette façon. – Eggi

+0

Vous n'avez pas à désactiver le bouton lorsque quelque chose est modifié mais vous devez le désactiver lorsqu'une erreur de validation s'est produite. Il suffit de lier la commande Button et d'implémenter la méthode CanExecute en conséquence, vous avez terminé! – gaurawerma