... 그래서
:
당신은 기본적으로 두 개의 글로벌 컬렉션을 가지고 당신은 싱글 톤의 몇 있는데 문제는 방법 인 경우 이를 귀하의 뷰 모델에 가장 잘 통합하십시오.
나는이 두 가지를 서비스로 취급하고이를 인터페이스에 포함하는 클래스를 래핑합니다. 그래서 :
public interface IRemoteComputersService
{
void AddComputer(Computer computerToAdd);
void RemoveComputer(Computer computerToremove);
ReadOnlyCollection<Computer> RemoteComputers{get;}
}
이 인터페이스는 내 ViewModelLocator에서 원격 PC를
를 관리하는 클래스에 과부하를 할 필요가 나는 그것을 등록 할 것 : 나는 좋겠 내 뷰 모델에서
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
if (ViewModelBase.IsInDesignModeStatic)
{
SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
}
else
{
SimpleIoc.Default.Register<IRemoteComputersService,RemoteComputersService>();
SimpleIoc.Default.Register<IDataService, DataService>();
}
SimpleIoc.Default.Register<MyViewModel>();
SimpleIoc.Default.Register<MainViewModel>();
}
}
을 뷰 모델에 그것을 삽입하십시오 :
SimpleIoc은 재귀 적으로 d 귀하의 뷰 모델에 대한 독립성. "MyViewModel"은 IRemoteComputersService 서비스에 종속되므로 먼저이 문제를 해결 한 다음 viewmodel에 주입합니다.
MVVM-Light는 컨테이너에있는 각각의 항목을 기본적으로 싱글 톤으로 처리하므로 SimpleIoc에서 하나의 IRemoteComputersService 만 확인하게됩니다.
이 방법으로 문제를 해결할 수 있습니다. PC와 타이머를보기 쉽고 테스트 가능한 방법으로 액세스 할 수 있으며 메시징을 볼 필요가 없습니다.