在MVVM中为Viewmodels创建一个空基类是不好的做法吗?

Dan*_*kes -1 c# oop wpf mvvm

我正在设计一个(有点)简单的测验应用程序,用于学校项目以适应MVVM.

它有两个视图 - 一个用于实际测验部分,一个用于结果等.

要在这些视图之间导航,我使用的是当前为空的BaseVeiwModel类(仅继承自INotifyPropertyChanged的ObservableObject类实现).

这是我的两个视图模型的基类,其中我将其实例设置为当前视图,允许我在我的第一个视图模型中使用方法在它们之间切换.

我想问一下,如果有一个基本的viewmodel类是空的,这是不好的做法,如果它是我该怎么办?我确实考虑过只使用一个ObservableObject实例,因为它们都从OBservableObject继承 - 但我认为它看起来不那么清晰和杂乱 - 因为我的模型也继承了ObservableObject.

编辑:

所以,我的BaseViewModel目前在我的第一个VeiwModel中实例化

private BaseVeiwModel _currentVeiw;
public BaseVeiwModel CurrentVeiw
{
    get { return _currentVeiw; }
    set { OnPropertyChanged(ref _currentVeiw, value); }
 }

 //in the constructor:
 CurrentVeiw = this;
Run Code Online (Sandbox Code Playgroud)

然后我有一个方法(当前按钮用作命令,但将在QuestionViewModel类中调用)将视图更改为我的第二个:

private void ChangeView(object blank)
    {
        CurrentVeiw = new FinishedVeiwModel();
        Console.WriteLine("Button Clicked!");
        Console.WriteLine(CurrentVeiw);
    }
Run Code Online (Sandbox Code Playgroud)

我的基类很简单:

 public class BaseVeiwModel :ObservableObject
{
    //Completely empty
}
Run Code Online (Sandbox Code Playgroud)

Mig*_*oom 5

不,这不是一个坏习惯.例如INotifyPropertyChanged,在基类中实现是一个好主意,否则你必须在每个视图模型中执行它.

我建议你做基础课abstract.然后,您无法创建此基类的实例.

public abstract class BaseViewModel
Run Code Online (Sandbox Code Playgroud)

看看摘要(C#参考)

abstract修饰符指示要修改的东西有缺失或不完整的实现.abstract修饰符可以与类,方法,属性,索引器和事件一起使用.abstract在类声明中使用 修饰符来指示类仅用于其他类的基类.标记为抽象或包含在抽象类中的成员必须由派生自抽象类的类实现.

  • 问题告诉我,他有一个完全空的基类,它本身扩展了另一个实现INotifyPropertyChanged的基类(ObservableObject). (2认同)