Hej, buduję sobie aplikację desktopową w C# WPF. Bazując na tej odpowiedzi stworzyłem solucję o strukturze jak poniżej:
Wydaje mi się trochę że przekombinowałem, bo teraz próbując otworzyć dialog z modelu widoku lub serwisów nie mam dostępu do widoków :/ zakładając, że:
- warstwa G_Hoover.Contracts wie tylko o:
- G_Hoover.Models
- warstwa G_Hoover.Desktop wie o:
- G_Hoover.Contracts
- G_Hoover.Models
Jak Wy byście ogarnęli komunikację między widokami i modelami widoków? Chciałem też otwierać dialogi z Services.Controls, a nie z VM, dlatego też zależało mi żeby Services wiedziały o ViewModels, co bym mógł przekazać do okna dialogu jego ownera (czyli VM) w ten sposób:
bool? success = _dialogService.ShowOpenFileDialog(browserViewModel, settings);
Dlatego też przeniosłem ViewModels do G_Hoover.Contracts. Czy po prostu otwierać dialogi z VM? Dla wygody otwierania okien dialogowych korzystam z MvvmDialogs. Przykład z modelu widoku:
SearchPhrase = ShowDialog(viewModel => _dialogService.ShowDialog<PhraseView>(this, viewModel));