代理人が何であるか、そして自分のプログラムで使用しているかどうかを理解するには、何か助けが必要です。私は私のコマンドを実装するために別のスタックポストで見つけたRelayCommandクラスを使用しています。RelayCommandと代理人、代理人を理解しようとしています
RelayCommand:私のViewModelのコンストラクタで
public class RelayCommand : ICommand
{
readonly Action<object> _execute;
readonly Func<bool> _canExecute;
public RelayCommand(Action<object> execute, Func<bool> canExecute = null)
{
if (execute == null)
throw new ArgumentNullException(nameof(execute));
_execute = execute;
_canExecute = canExecute;
}
public bool CanExecute(object parameter)
{
return _canExecute == null || _canExecute.Invoke();
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
public void Execute(object parameter)
{
_execute(parameter);
}
}
が、私はこれをやっている:
public ICommand SearchCommand { get; set; }
//Constructor
public BookingViewModel()
{
SearchCommand = new RelayCommand(SearchCommand_DoWork,() => true);
}
public async void SearchCommand_DoWork(object obj)
{
//Code inside this method not shown
}
私は、デリゲートメソッドをカプセル化タイプであることを知っています。
public delegate int MethodName(string name)
デリゲートがintの戻り値の型を持っており、文字列のパラメータを取るメソッドmethodNameをカプセル化され
:あなたはこのようなデリゲートを書くことができます。
これは、コードに表示されているiのようなICommandを使用して作成されたデリゲートがあることを意味しますか?カプセル化の方法が "SearchCommand_DoWork"の場合
私にはいくつかのことができることを願っています。
あなたの答えをありがとう、それは本当に代議員についていくつかのことを明らかにしました。 – Mikkel