我已经看到在构造函数或属性本身内创建了多个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; }
答案 0 :(得分:1)
我和Suiko6272的想法一样。
我最终还是继续使用你的第二个解决方案。但是我确实在我的财产中使用了这种机制了很长一段时间
private DelegateCommand _cmdLogin;
public DelegateCommand CmdLogin
{
get { return _cmdLogin??(_cmdLogin = new DelegateCommand(this.Login, this.CanLogIn));}
}
上面的代码延迟加载delegate命令,只有一行代码。
我最终选择了第二个解决方案,因为对于其他编码人员而言,这是最清晰/最简单的解决方案。