1

我有一个带有 3 个按钮的 WPF 表单,并在它们上面路由事件,命令在启动时绑定......

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

有效性启用和禁用按钮等。

表单有一个新或旧对象的实例,并且对数据进行验证

我的问题是事件一直在执行并且表单只是挂起导致验证代码确实轮询数据库等来检查....

如何在加载表单时让它们触发一次 mmm....

4

1 回答 1

2

如果我理解你,只需要在表单加载时检查数据的有效性并且 IsValid 方法是资源密集型的吗?为什么不将 IsValid()方法更改为 IsValid属性并将其设置在 Form_Loaded 事件中?

每当 UI 触发 TextChanged、LostFocus 等事件时,都会检查 CanExute 方法。因此,您最好使这些方法非常轻量级。

于 2009-10-25T14:52:00.113 回答