저는 MVVM 패턴을 연구하여 Windows Phone 8 응용 프로그램에서 실전에 옮겼습니다. ViewModels를 초기화하고 액세스하기위한 모범 사례에 대한 질문이 있습니다. 앱. 나는 WP8 SDK를 템플릿에서 데이터 바인딩 응용 프로그램을 만들 때Windows Phone 8 - MVVM ViewModels 및 App.xaml.cs
, 나는이 코드를 발견이 파일 App.xaml.cs를 :
내가 이해에서public static MainViewModel ViewModel
{
get
{
// Delay creation of the view model until necessary
if (viewModel == null)
viewModel = new MainViewModel();
return viewModel;
}
}
private void Application_Activated(object sender, ActivatedEventArgs e)
{
// Ensure that application state is restored appropriately
if (!App.ViewModel.IsDataLoaded)
{
App.ViewModel.LoadData();
}
}
의 것을 의미한다 App 클래스에는 MainViewModel이 정적 구성원으로 포함되어 있으며 응용 프로그램이 활성화되면 ViewModel이로드됩니다.
경우되고, 나는 다음과 같은 질문을 가지고 내 응용 프로그램이 여러 ViewModels이있는 경우
, 그들 모두가 App.xaml.cs를 파일 내의 회원으로 저장됩니다?
모든 ViewModel의 데이터가 동시에로드되는 경우 내 앱의 메모리를 어떻게 관리합니까? 각 ViewModel의 데이터를 언로드하고 내 View에서 사용중인 ViewModel 만로드 할 수 있습니까?
대단히 감사합니다. 대단히 감사합니다. 그리고 참조가 너무 좋습니다 :) 만약 내가이 접근법으로 가야한다면, 사용하지 않을 때 너무 많은 메모리를 차지하지 않기를 원한다면 내 ViewModels에서 데이터를 언로드하는 가장 좋은 방법은 무엇일까? ? – miguelarcilla
나는 ViewModel에 IDisposable을 구현하고 View를 떠날 때 Dispose를하는 것이 하나의 옵션이라고 생각한다. – anderZubi
andersZubi의 답변을 확장하면서, 저는 앱의 현재 상태를 나타내는 싱글 톤을 만들고 싶습니다. Dictionary 유형의 속성을가집니다. 뷰 모델을 필요로하는 모든 페이지 또는 컨트롤은 사전을 먼저 찾은 다음 아직 존재하지 않으면 만들고 사전에 viewModel을 추가합니다. 그럼 IDisposable 있다면, 당신은 그것을 해체 할 필요가 없다. 뷰를 언로드 할 필요가 없다. 뷰를 언로드 한 후에도 임의의 트리거를 기반으로 처분하도록 선택할 수있는 참조가 있으므로, 사전의 뷰 모델의 「열쇠」 –