WPF перенаправляет события? - PullRequest
       9

WPF перенаправляет события?

1 голос
/ 25 октября 2009

У меня есть форма WPF с 3 кнопками, и на них перенаправлены события, команды запускаются при запуске ...

 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)
  }

Срок действия включает и отключает кнопки и т. Д.

В форме есть экземпляр объекта, нового или старого, и данные проверяются

Моя проблема в том, что событие просто оправдывается все время, а форма просто зависает, потому что код проверки выполняет опрос db и т. Д., Чтобы проверить ....

как мне заставить их срабатывать один раз при загрузке формы ммм ....

1 Ответ

2 голосов
/ 25 октября 2009

Если я вас хорошо понимаю, нужно только проверить достоверность данных при загрузке формы, а метод IsValid требует значительных ресурсов? Почему бы вам не изменить метод IsValid () на свойство IsValid и установить его в событии Form_Loaded?

Метод CanExute будет проверяться каждый раз, когда пользовательский интерфейс запускает такие события, как TextChanged, LostFocus и т. Д. Поэтому вам лучше сделать такие методы очень легковесными.

...