我将在现有的 MVVM WPF 应用程序中介绍 View State 功能。目标是能够保存和加载(恢复)控件的特定状态。
问题更多是关于系统灵活性/可维护性角度的设计和最佳解决方案。
目前的基础设施:
public abstract class ViewModelBase
{
protected ViewModelBase(...)
{
}
}
// and few more very the same ViewModel classes for different control types
public sealed class GridViewModel : ViewModelBase
{
protected GridViewModel(...)
: base(...)
{
}
}
我是这样介绍IViewState interface
的,因此每个特定的 ViewModel 都可以提供自己的实现,例如GridViewState class
并以下列方式将其放入 ViewModel 基础结构中:(想法是将 ViewState 的类型作为通用参数传递)
public abstract class ViewModelBase<TViewState>
where TViewState : class, IViewState
{
protected ViewModelBase(...)
{
}
public TViewState ViewState { ... }
}
- 将 View State 功能附加到 ViewModel 是个好主意吗?
- 通过像这样的通用类型参数引入特定 ViewModel 类型和 ViewState 之间的绑定关系是一个很好的解决方案
class GridViewModel<GridViewState>
吗? - 在哪里以及为什么更好地定义这样的方法,比如
LoadState() / SaveState(),
IViewState
它自己或ViewModelBase
? - 还有其他设计解决方案吗?