2

当 wpf 应用程序启动时,我只调用了一次命令的CanExecute方法。我希望能够定期重新评估该方法。我发现了一些关于以编程方式或使用DispatcherTimer调用CommandManager.InvalidateRequerySuggested()的参考。两者都不适合我,并且 CanExecute 在每个应用程序生命周期中只调用一次。

有人知道修复吗?

-pom-

4

1 回答 1

3

我已经阅读了有关该技术的信息,但它不是我使用过的或我认为常用的。通常我会使用 Prism 的 DelegateCommand 或 MVVM light 的 RelayCommand。这些实现了具有 CanExecuteChanged 事件的 ICommand。然后,您负责在视图模型的状态发生变化时引发此事件,例如

public class MyViewModel
{
   DelegateCommand _myCommand;

   public MyViewModel()
   {
      _myCommand = new DelegateCommand(ExecuteMyCommand, CanExecuteMyCommand);
   }

   public ICommand MyCommand
   {
       get{ return _myCommand; }
   }

   private void ExecuteMyCommand(){ ... }
   private bool CanExecuteMyCommand() { return true/false; }

   // for example
   public int SomeProperty
   { 
      get{ ... }
      set{  
         ...;
         if( ... ){
            _myCommand.RaiseCanExecuteChanged();
         }
      }
   }
}

不完全是你所追求的,但我希望它有所帮助。

于 2012-03-27T18:50:57.993 回答