2009-10-25 10 views
1

J'ai une forme WPF avec 3 boutons et ont acheminé des événements sur eux, les commandes sont binded au démarrage ...WPF Déroulement des événements routés?

private void InitCommandBinding(UIElement frameworkElement) { 
    CommandBinding commandBinding; 





    commandBinding = new CommandBinding(ViewModelCommands.Save, Save_Executed, Save_CanExecute); 
    frameworkElement.CommandBindings.Add(commandBinding); 

    commandBinding = new CommandBinding(ViewModelCommands.SaveAndClose, SaveAndClose_Executed, SaveAndClose_CanExecute); 
    frameworkElement.CommandBindings.Add(commandBinding); 

    commandBinding = new CommandBinding(ViewModelCommands.Delete, Delete_Executed, Delete_CanExecute); 
    frameworkElement.CommandBindings.Add(commandBinding); 
    } 

the details ui has code like 

private void Delete_Executed(object sender, ExecutedRoutedEventArgs e) { 
    try 
    {do validations } 
} 


private void Delete_CanExecute(object sender, CanExecuteRoutedEventArgs e) { 
    e.CanExecute = viewModel.IsValid(); (returns bool) 
    } 

Validité permet d'activer et de désactiver les boutons etc.

La forme a une instance d'un objet neuf ou ancien et lieu sur la validation des données

Mon problème est que l'événement vient excute tout le temps et la forme pend juste cause du code de validation ne sondage db etc pour vérifier ....

comment Je les ai juste à tirer une fois quand le formulaire est chargé mmm ....

Répondre

2

Si je vous comprends bien, il est seulement nécessaire de vérifier la validité des données au chargement du formulaire et la méthode IsValid est gourmande en ressources? Pourquoi ne modifiez-vous pas la méthode IsValid() en une propriété IsValid et définissez-vous cela dans l'événement Form_Loaded?

La méthode CanExute est vérifiée à chaque fois que l'interface utilisateur déclenche un événement tel que TextChanged, LostFocus, etc. Il est donc préférable de rendre ces méthodes très légères.

+0

merci pour l'avance, je suppose que le CanExute se déclenche beaucoup et j'ai un code de validation comme vérifier si le code existe dans db etc qui interrogent le db.Les services de cadre de validation gérer cela, mais les problèmes de niveau ui ont surgi ... – abmv

+0

-on répond. CanExecute doit être rapide. Vérifier la base de données, cliquer sur un service web, etc. n'est pas une bonne idée ici. Vous ne devez vérifier la base de données que lorsque l'utilisateur est prêt à valider ses modifications. –

Questions connexes