RelayCommandT
RelayCommand<T>
類似於 RelayCommand
,但允許直接將物件傳遞給命令。它實現了 ICommand
介面,因此可用於繫結到 XAML 中的 Command
s(例如,作為 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