mvvm命令设置样式
这里的命令可能是Josh Smith的RelayCommand的一些变体(我把我的命令称为VmCommand),问题是ViewModel是如何创建它们的。我知道两种基本技术,第一种是在构造函数中设置所有命令属性,第二种是在属性getter中惰性地实例化命令 我更喜欢后者,因为我觉得它让我的代码更有条理,因为我通常会将与给定功能相关的所有行为包装在它自己的区域中,如下面SaveCommand所示 您希望如何设置命令 干杯,mvvm命令设置样式,mvvm,command,Mvvm,Command,这里的命令可能是Josh Smith的RelayCommand的一些变体(我把我的命令称为VmCommand),问题是ViewModel是如何创建它们的。我知道两种基本技术,第一种是在构造函数中设置所有命令属性,第二种是在属性getter中惰性地实例化命令 我更喜欢后者,因为我觉得它让我的代码更有条理,因为我通常会将与给定功能相关的所有行为包装在它自己的区域中,如下面SaveCommand所示 您希望如何设置命令 干杯, 贝里尔 这就是我所做的。。。但是,当IsDirty发生更改时,不要期望您的
贝里尔
这就是我所做的。。。但是,当IsDirty发生更改时,不要期望您的按钮自动启用 您需要告诉您的命令激发CanExecuteChanged并调用,否则您会发现您的按钮并不总是响应命令“可执行”状态的更改
#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