Próbuję poradzić sobie z pisaniem testowalnych ViewModels w Silverlight 4. Im obecnie używa światła MVVM.Silverlight Konstruktor wtrysku w widoku Model + tryb projektowania
Im przy użyciu AutoFac i IoCContainer wykonuje swoje zadanie dobrze. Jednak aby wstrzyknąć do konstruktora ViewModels, które są zobowiązane do Wyświetleń mam tego konstruktora łańcuchowym:
public UserViewModel() : this(IoCContainer.Resolve<IUserServiceAsync>())
{
}
public UserViewModel(IUserServiceAsync userService)
{
if (this.IsInDesignMode) return;
_userService = userService;
}
Które nie czuje czyste, ale jest najlepszym rozwiązaniem znalazłem do tej pory. To działa, a moja aplikacja działa zgodnie z życzeniem i można ją przetestować z odwróconą kontrolą.
Jednak z moim VM związany z moim zdaniem tak:
<UserControl.DataContext>
<ViewModel:UserViewModel />
</UserControl.DataContext>
W moim XAML stronie atrybutów, tryb projektowania zarówno VS2010 i mieszanki robi praca.
Czy istnieje lepszy sposób na osiągnięcie tego, co próbuję w Silverlight, który nadal działa w trybie projektowania? Utrata trybu projektowania nie stanowi problemu, ale przydaje się podczas nauki XAML. Czysty sposób, w jaki nie ma łańcuchów, byłby fajny!
Zastanawiam się, czy możliwe jest użycie AutoFac/IoC do rozwiązania viewmodeli do widoków, zgodnie z powyższym podejściem markowania XAML i przejściem w dół tej trasy?
Dzięki.
Dzięki za szczegółową odpowiedź! – Jammin