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