4

JoshSmithとLaurentBugnionのRelayCommandの実装に違いがあるかどうかはわかりませんが、どこを見ても、RelayCommandのExecute部分は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<>ではありませんでした。

一体何がここに欠けているのですか?

4

1 に答える 1

8

(MVVM Lightでの)非ジェネリック実装はRelayCommandパラメーターを受け入れません。代わりRelayCommand<Object>に、または(さらに良い)RelayCommand<YourCustomType>パラメータtoSomeFuncが強く型付けされるように使用してください。

于 2010-06-07T03:58:10.343 に答える