wpf アプリの起動時にコマンドのCanExecuteメソッドを 1 回だけ呼び出します。その方法を定期的に再評価できるようにしたい。プログラムまたはDispatcherTimerを使用してCommandManager.InvalidateRequerySuggested()を呼び出すことへの言及をいくつか見つけました。どちらも機能せず、CanExecute はアプリの有効期間ごとに 1 回だけ呼び出されます。
誰でも修正を知っていますか?
-ポン-
私はそのテクニックについて読んだことがありますが、私が使用したものでも、一般的に使用されていると思われるものでもありません。通常、私は 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();
}
}
}
}
あなたが求めていたものとはまったく異なりますが、お役に立てば幸いです。