如果您正在执行MVVM并使用命令,您将经常看到ViewModel上的ICommand属性由私有RelayCommand或DelegateCommand字段支持,就像MSDN上最初的MVVM文章中的这个示例
RelayCommand _saveCommand;
public ICommand SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new RelayCommand(param => this.Save(),
param => this.CanSave );
}
return _saveCommand;
}
}
但是,这非常混乱,并且使设置新命令变得相当单调乏味(我与一些经验丰富的WinForms开发人员一起工作,他们不喜欢输入这些内容)。所以我想把它简化一下,深入研究一下。我在get{}代码块的第一行设置了一个断点,发现它只在我的应用程序第一次加载时被命中--以后我可以发出任意多个命令,而这个断点永远不会被命中--所以我想简化这一点,以便从我的ViewModels中去除一些杂乱的东西,并注意到以下代码的工作方式是相同的:
public ICommand SaveCommand
{
get
{
return new RelayCommand(param => this.Save(), param => this.CanSave );
}
}
但是,我对C#或垃圾收集器的了解还不够,不知道这是否会导致问题,比如在某些情况下会生成过多的垃圾。这会不会有问题呢?
https://stackoverflow.com/questions/3112203
复制相似问题