我有一个ViewModelBase,如下所示:
public class ViewModelBase : BindableBase, INavigationAware, IActiveAware, IDockAware
{
public ViewModelBase() {SaveCommand = new DelegateCommand(OnSave, CanSave);}
public DelegateCommand SaveCommand { get; set; }
protected virtual void OnSave() { }
在我的班级中,我继承了ViewModelBase,如下所示:
public class FooViewVM : ViewModelBase
{
protected override async void OnSave() { await dto.Save(Foo); }
}
当我按下“保存”按钮(位于不同组中的功能区中)时,该命令会执行,但代码不会运行FooViewVM,而是停在ViewModelBase中的虚拟空白处。我有点困惑,因为我认为VM中的方法会被执行(因为它会覆盖基础中的虚方法)。我是否在基类中定义了太多接口?我应该将DelegateCommand移动到每个VM而不是继承吗?最后,我想更好地理解为什么这不像我预期的那样工作。