EventToCommandクラス（MVVM Light Toolkit リファレンス）

# EventToCommand
## 概要

```csharp
public class EventToCommand : System.Windows.Interactivity.TriggerAction<System.Windows.DependencyObject>
```

- `EventTrigger`や`DataTrigger`のアクションとして利用するクラス。
- このクラスを使うことで、`Command`プロパティを持たないコントロールにコマンドをバインドしたり、`Click`イベント以外のイベントにコマンドをバインドできる。
- 同等のことは、`System.Windows.Interactivity.InvokeCommandAction`を使ってもできる。

##### 名前空間
- `GalaSoft.MvvmLight.Command`

#### アセンブリ
- GalaSoft.MvvmLight.Platform
- GalaSoft.MvvmLight.Extras


## メソッド
### Invoke
<details><summary>Invoke</summary><div>

```csharp
public void Invoke()
```

##### 概要
- `Command`プロパティに設定したコマンドを、引数を`null`にして実行する。
- 通常、呼び出すことはない。
</div></details>


## プロパティ
### AlwaysInvokeCommand
<details><summary>AlwaysInvokeCommand</summary><div>

```csharp
public bool AlwaysInvokeCommand { get; set; }
```

##### 概要
- 依存関係プロパティ。
- コントロールが無効状態でもコマンドを実行するかどうかを示す。
- デフォルトは`false`（実行しない）。
</div></details>


### Command
<details><summary>Command</summary><div>

```csharp
public System.Windows.Input.ICommand Command { get; set; }
```

##### 概要
- 依存関係プロパティ。
- このアクションが実行するコマンド（`ICommand`）を指定する。
</div></details>


### CommandParameter
<details><summary>CommandParameter</summary><div>

```csharp
public object CommandParameter { get; set; }
```

##### 概要
- 依存関係プロパティ。
- このアクションが実行するコマンド（`ICommand`）に渡す引数を指定する。
- `EventArgsConverter`を使うときには、`null`を指定すること。
</div></details>


### EventArgsConverter
<details><summary>EventArgsConverter</summary><div>

```csharp
public IEventArgsConverter EventArgsConverter { get; set; }
```

##### 概要
- このアクションを持つトリガーに渡される`EventArgs`を、コマンドに渡す引数に変換するコンバーターを指定する。
- `Command`で指定したコマンドに、コンバートした結果を引数として渡す。
- `PassEventArgsToCommand`が`true`のとき、かつ、`CommandParameter`が`null`のときのみ、指定したコンバーターが使われる。
</div></details>


### EventArgsConverterParameter
<details><summary>EventArgsConverterParameter</summary><div>

```csharp
public object EventArgsConverterParameter { get; set; }
```

##### 概要
- 依存関係プロパティ。
- `EventArgsConverter`で指定したコンバーターに渡す追加の引数を指定する。
</div></details>


### MustToggleIsEnabled
<details><summary>MustToggleIsEnabled</summary><div>

```csharp
public bool MustToggleIsEnabled { get; set; }
```

##### 概要
- 依存関係プロパティ。
- このアクションが実行するコマンドの`CanExecute`が`false`を戻すとき、このアクションを持つトリガーを添付したコントロールが無効状態になるかどうかを指定する。
- デフォルトは`false`（無効状態にならない）。
</div></details>


### PassEventArgsToCommand
<details><summary>PassEventArgsToCommand</summary><div>

```csharp
public bool PassEventArgsToCommand { get; set; }
```

##### 概要
- このアクションを持つトリガーに渡される`EventArgs`を、コマンドの引数に渡すかどうかを指定する。
- `CommandParameter`が`null`でない場合は、`PassEventArgsToCommand`の値に関わらず、`CommandParameter`をコマンドの引数に渡す。
</div></details>


## 補足
### CommandParameter, PassEventArgsToCommand, EventArgsConverterとコマンドに渡す引数の関係

|CommandParameter |PassEventArgsToCommand |EventArgsConverter |コマンドに渡す引数 |
|:--------------:|:---------------------:|:-----------------:|:----|
|`null`以外       |（任意）|（任意）|`CommandParameter`|
|`null`|`false`|（任意）|`null`|
|`null`|`true`|`null`|`EventArgs`|
|`null`|`ture`|`null`以外|`EventArgsConverter`によって変換された`EventArgs`|

## 参照
- [目次](https://qiita.com/h084/items/c5355fa734936c56ca50/)
- [IEventArgsConverter](https://qiita.com/h084/items/9af2df858cfebff4fbf8)