0

我有一个如下所示的 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(s) 移动到每个 VM 中而不是继承吗?最后,我想更好地理解为什么这不像我预期的那样工作。

4

0 回答 0