Не могу передать один параметр лямбда-функции в RelayCommand MVVM Light Toolkit - PullRequest
3 голосов
/ 07 июня 2010

Я не знаю, есть ли разница между реализациями RelayCommand Джоша Смита и Лорана Бюньона или нет, но везде, где я смотрел, похоже, что часть Execute RelayCommand может принимать 0 или 1 параметры.Я только смог заставить его работать с 0. Когда я пытаюсь что-то вроде:

public class Test
{
    public RelayCommand MyCommand { get; set; }

    public Test()
    {
        MyCommand = new RelayCommand((param) => SomeFunc(param));
    }

    private void SomeFunc( object param)
    {
    }
}

, я получаю ошибку: Delegate 'System.Action' does not take '1' arguments.Просто чтобы убедиться, что я не сумасшедший, я обратился к определению RelayCommand, чтобы убедиться, что в моем решении где-то нет мошеннической реализации, но достаточно точно, что это было просто Action, а не Action <>.

Что, черт возьми, мне здесь не хватает?

1 Ответ

7 голосов
/ 07 июня 2010

Неуниверсальная реализация RelayCommand (в MVVM Light) не принимает параметр. Вместо этого используйте RelayCommand<Object> или (еще лучше) RelayCommand<YourCustomType>, чтобы параметр SomeFunc был строго набран.

...