RelayCommandT

RelayCommand<T> 類似於 RelayCommand,但允許直接將物件傳遞給命令。它實現了 ICommand 介面,因此可用於繫結到 XAML 中的 Commands(例如,作為 Button 元素的 Command 屬性)。然後,你可以使用 CommandParameter 屬性將物件傳遞給命令。

XAML 示例:

<Button Command="{Binding MyCommand}" CommandParameter="{Binding MyModel}" />

建構函式有兩個引數; 第一個是在呼叫 ICommand.Execute 時執行的 Action(例如使用者點選按鈕),第二個是 Func <string,bool>,它確定是否可以執行操作(預設為 true,呼叫 canExecute 在以下段落中)。基本結構如下:

public RelayCommand<string> MyCommand => new RelayCommand<string>(
    obj =>
    {
        //execute action
        Message = obj;
    },
    obj =>
    {
        //return true if button should be enabled or not
        return obj != "allowed";
    }
);

一些值得注意的影響:

  • 如果 canExecute 返回 false,將禁用該使用者的 Button
  • 在真正執行操作之前,將再次檢查 canExecute
  • 你可以致電 MyCommand.RaiseCanExecuteChanged(); 強制重新評估 canExecute Func