当 wpf 应用程序启动时,我只调用了一次命令的CanExecute方法。我希望能够定期重新评估该方法。我发现了一些关于以编程方式或使用DispatcherTimer调用CommandManager.InvalidateRequerySuggested()的参考。两者都不适合我,并且 CanExecute 在每个应用程序生命周期中只调用一次。
有人知道修复吗?
-pom-
我已经阅读了有关该技术的信息,但它不是我使用过的或我认为常用的。通常我会使用 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();
}
}
}
}
不完全是你所追求的,但我希望它有所帮助。