【发布时间】:2023-03-25 06:01:01
【问题描述】:
这里的命令是 Josh Smith 的 RelayCommand 的一些变体(我称我的为 VmCommand),问题是您的 ViewModel 如何创建它们。我知道两种基本技术,第一种是在构造函数中设置所有命令属性,第二种是在属性 getter 中懒惰地实例化命令。
我更喜欢后者,因为我觉得它可以让我的代码更有条理,因为我通常会将与给定功能相关的所有行为封装在它自己的区域中,如下所示的 SaveCommand。
你喜欢如何设置你的命令?
干杯,
浆果
#region Saving
public ICommand SaveCommand
{
get
{
return _saveCommand ?? (_saveCommand = new VmCommand
{
CanExecuteDelegate = x => CanSave(),
ExecuteDelegate = x => Save()
});
}
}
private ICommand _saveCommand;
private bool CanSave() { return IsDirty; }
public void Save()
{
_facade.Save();
}
#endregion
【问题讨论】: