在Constructor或Property中创建DelegateCommand

时间:2012-01-06 20:24:17

标签: silverlight-4.0 mvvm

我已经看到在构造函数或属性本身内创建了多个DelegateCommands示例。我想知道在构造函数中是否有任何优势,因为我一直在属性中执行它以更容易地跟踪它。

(在我的例子中使用Prism,Silverlight4和SimpleMVVM Toolkit)

    private DelegateCommand _cmdLogin;
    public DelegateCommand CmdLogin
    {
        get
        {
            if (_cmdLogin == null)
            {
                _cmdLogin = new DelegateCommand(this.Login, this.CanLogIn);
            }
            return _cmdLogin;
        }
    }

VS

    public LoginViewModel()
    {
        this.LoginCommand = new DelegateCommand(this.Login, this.CanLogin);
    }
    public DelegateCommand LoginCommand { get; set; }

1 个答案:

答案 0 :(得分:1)

我和Suiko6272的想法一样。

我最终还是继续使用你的第二个解决方案。但是我确实在我的财产中使用了这种机制了很长一段时间

private DelegateCommand _cmdLogin;
public DelegateCommand CmdLogin
{
    get { return _cmdLogin??(_cmdLogin = new DelegateCommand(this.Login, this.CanLogIn));}
}

上面的代码延迟加载delegate命令,只有一行代码。

我最终选择了第二个解决方案,因为对于其他编码人员而言,这是最清晰/最简单的解决方案。