假设我的应用程序连接到特定的URL。 我有一个ConnectionWindow和一个ConnectionViewModel,支持从用户那里收集这些信息并调用连接地址的命令。 下一次应用程序启动时,我想重新连接到相同的地址,而无需提示用户。
到目前为止,我的解决方案是创建一个ApplicationViewModel,提供连接到特定地址的命令,并将该地址保存到某些持久存储中(实际保存的位置对于此问题来说不重要)。 以下是简化的类模型。
应用程序视图模型:
public class ApplicationViewModel : INotifyPropertyChanged
{
public Uri Address{ get; set; }
public void ConnectTo( Uri address )
{
// Connect to the address
// Save the addres in persistent storage for later re-use
Address = address;
}
...
}
连接视图模型:public class ConnectionViewModel : INotifyPropertyChanged
{
private ApplicationViewModel _appModel;
public ConnectionViewModel( ApplicationViewModel model )
{
_appModel = model;
}
public ICommand ConnectCmd
{
get
{
if( _connectCmd == null )
{
_connectCmd = new LambdaCommand(
p => _appModel.ConnectTo( Address ),
p => Address != null
);
}
return _connectCmd;
}
}
public Uri Address{ get; set; }
...
}
那么问题是:使用ApplicationViewModel处理这个问题是否正确?还有其他什么方法可以存储应用程序状态?
编辑:我也想知道这对可测试性的影响。使用MVVM的主要原因之一是能够在没有托管应用程序的情况下测试模型。具体而言,我对集中式应用程序设置如何影响可测试性和模拟相关模型的能力的洞察力特别感兴趣。