我正在设计一个(有点)简单的测验应用程序,用于学校项目以适应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)
不,这不是一个坏习惯.例如INotifyPropertyChanged,在基类中实现是一个好主意,否则你必须在每个视图模型中执行它.
我建议你做基础课abstract.然后,您无法创建此基类的实例.
public abstract class BaseViewModel
Run Code Online (Sandbox Code Playgroud)
看看摘要(C#参考)
该
abstract修饰符指示要修改的东西有缺失或不完整的实现.abstract修饰符可以与类,方法,属性,索引器和事件一起使用.abstract在类声明中使用 修饰符来指示类仅用于其他类的基类.标记为抽象或包含在抽象类中的成员必须由派生自抽象类的类实现.