私は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)
}
有効性は、ボタンなどを有効または無効にします。
フォームには新しいオブジェクトまたは古いオブジェクトのインスタンスがあり、データに対して検証が行われます
私の問題は、イベントが常に実行され、フォームがハングするだけで、検証コードが db などをポーリングしてチェックすることです....
フォームがロードされたときに一度だけ起動する方法はうーん....