質問

ジョシュ・スミスを使うとき RelayCommand, 、私が見た例のほとんどは、次のような怠zyな初期化を使用しています。

public class ViewModel
{
    private ICommand myCommand;

    public ICommand MyCommand
    {
        get
        {
            if (myCommand == null)
            {
                myCommand = new RelayCommand(p => DoSomething() );
            }

            return myCommand;
        }
    }
    // ... stuff ...

}

このようなコンストラクターにリレーコマンドを作成するのではなく:

public class ViewModel
{
    public ViewModel()
    {
            MyCommand = new RelayCommand(p => DoSomething());
    }

    public ICommand MyCommand
    {
        get;
        private set;

    }

    // ... stuff ...
}

ここで怠zyな初期化を使用することの利点は何ですか?バインディングをセットアップするときにGETプロパティを呼び出す必要があるため、コンストラクターの設定でこの方法を使用する理由は見られません。

ここに何かが足りませんか?

役に立ちましたか?

解決

実際、WPFとSilverlightはバインディングごとに一度だけリレーコマンドを取得するため、バッキングフィールドをまったく保存する必要はありません。

public ICommand MyCommand
{
    get
    {
        return new RelayCommand(p => DoSomething());
    }
}

したがって、あなたが提案するように.ctorでそれを作成することに何の問題もありませんが、理由はほとんどありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top