げんさん日記

プログラミングで気付いた事等を書きます。

ViewのコマンドをViewModelで受け取るCommandを作成する。

2021年05月21日 11時24分11秒 | WPF
Viewから発生したコマンドをViewModelで受け取れるようにします。

ICommandを継承したRelayCommandを作成します。
public sealed class RelayCommand : ICommand
{
}

実行するメソッドを保存するプロパティを定義します。
private Action ActionMethod { get; set; }

コンストラクタを定義します。
public RelayCommand(Action execute)
{
  this.ActionMethod = execute;
}

実行するか判断するメソッドを定義します。
public bool CanExecute(object parameter)
{
  // 全て実行する。
  return true;
}

実行するメソッドを定義します。
public void Execute(object parameter)
{
  this.ActionMethod();
}

ICommandの実行メソッドを定義します。
void ICommand.Execute(object parameter)
{
  this.Execute(parameter);
}

使用例
public sealed class MainViewModel : BaseViewModel
{
  // ロードコマンド
  public ICommand LoadCommand { get; private set; }

  // コンストラクタ
  public MainViewModel ()
  {
    // コマンドを作成する。
    this.LoadCommand = new RelayCommand(this.OnLoad);
  }

  //ロード
  public void OnLoad()
  {
  }
}