MVVM을 처음 사용하면서 실험을하고 있습니다. 물론 모든 디자인 패턴은 모든 문제를 해결할뿐입니다. 그래서 응용 프로그램 상태를 저장하는 위치와 응용 프로그램 전체 명령을 저장할 위치를 파악하려고합니다.응용 프로그램 설정/상태를 MVVM 응용 프로그램에 저장하는 위치
내 응용 프로그램이 특정 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을 사용하는 주된 이유 중 하나는 호스트 응용 프로그램없이 모델을 테스트 할 수 있다는 것입니다. 특히, 중앙 집중식 앱 설정이 테스트 가능성에 영향을 미치고 종속 모델을 조롱하는 기능에 대한 통찰력에 관심이 있습니다.
저는 실제로 WPF에 대한 통찰력을 얻기 위해 지난 며칠 동안 Onyx 코드를 쏟아 부 었습니다. 그것은 내가 생각하는 방법과 내가 배웠던 것을 확실히 배치했다. –
감사합니다. Onyx 자체를 사용하지 않더라도 아이디어가 유용하기를 바랍니다. Onyx는 분명 여기서는 필요하지 않지만, 내가 생각하는 서비스 인터페이스 솔루션은 당신이 찾고있는 것입니다. – wekempf