2

wpf アプリの起動時にコマンドのCanExecuteメソッドを 1 回だけ呼び出します。その方法を定期的に再評価できるようにしたい。プログラムまたはDispatcherTimerを使用してCommandManager.InvalidateRequerySuggested()を呼び出すことへの言及をいくつか見つけました。どちらも機能せず、CanExecute はアプリの有効期間ごとに 1 回だけ呼び出されます。

誰でも修正を知っていますか?

-ポン-

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 に答える