생성자가 호출 될 때 DB에서 데이터를 가져 와서 listbox
을 적절하게 업데이트하는 대시 보드가 있습니다. 새 탭으로 이동하여 요소를 DB에 추가하고 대시 보드로 다시 이동하면보기가 업데이트되지 않습니다. 나는 ObservableCollection
을 정의했으며, 예를 들어 대시 보드보기의 목록에서 요소를 삭제하면 잘 작동합니다.WPF 프리즘 C#에서 DB 변경 및 업데이트 확인
내가 Prism
을 사용하고 있기 때문에 대시 보드에 INavigationAware
을 구현 했으므로이 방법으로 업데이트를 수행하면 삭제와 새로 추가가 가능하지만 문제는 다른 속성이 일관성이 필요하지 않다는 것입니다. 다시보기로 돌아 가면 전체 ViewModel
클래스가 다시 인스턴스화되기 때문에 그 상태를 유지하십시오.
private void StartStopService()
{
if (startStopTxt == "Start")
{
service.StartService();
}
else
{
service.StopService();
}
}
문제 : 서비스 모드 시작에서 또는 중지하면
public DashboardViewModel()
{
service = new Service.ServiceManager();
controller = ServiceController.GetServices().FirstOrDefault(x => x.ServiceName == service.ServiceName);
lbPlugins = new ObservableCollection<Plugin>();
lbPlugins.AddRange(new DbRepository().GetContext().PluginSet);
StartStopInit();
}
프로그램을 통해 승리 서비스를 설치할 수 있으며, 대시 보드 검사 : 여기
는 생성자 내가INavigationAware
을 구현하면 서비스가 어떻게 든 덮어 씁니다. 올바른 이름을 가져 오는 지 확인하고 있었는데 ...하지만 새로운 인스턴스가 생성 된 것처럼 보였습니다. 이제 다시 서비스를 시작할 수 있습니다 ... 가능하지 않아야합니다 ...
실제로 'INavigationAware'가 구현되어 있습니까? 그런 식으로 사용하면 ViewModel이 다시 인스턴스화됩니다. 생성자가 아닌 다른 함수에서 서비스를 시작하는 것이 좋습니다. 어쩌면 부모 클래스 내부 또는로드 이벤트 중에. – ViVi
글쎄, 나는 그것을 피하려고했지만, 아직 그것을 할 방법을 찾지 못했습니다. 일부 요소를 db 컨텍스트 속성 또는 뭔가 관찰 할 생각하고 있었다 ... db 변경 될 때 업데이트 할 수 있지만 ... 가능한 경우 알 수 없습니다 – Norgul