Zastanawia mnie fakt, w jaki sposób najlepiej manipulować view np. z viewmodelu mam na myśli operację na kontrolkach w code-behind. Doszedłem do wniosku, że można by do tego użyć service locatora i view potraktować jako service, czyli:
public partial class SampleView : UserControl, ISampleService
{
public SampleView ()
{
InitializeComponent();
ServiceLocator.Instance.AddService<ISampleService>(this);
}
}
Z tym, że to generuje zależności od view, a dokładniej od tego kiedy powstanie, a inny service może być zależny od ISampleService i chcieć do niego uzyskać dostęp wcześniej niż będzie on dodany do service locatora. A co za tym idzie nie można z niego korzystać w konstruktorze, a możliwie jak najpóźniej aby upewnić się, że będzie on już dostępny.
Znalazłem jeszcze coś takiego: https://stackoverflow.com/a/14247023/6751581 co wydaje się być najbardziej sensowne, tylko przy większej ilości interfejsów IView można utonąć w projekcie z plikami, wychodzę z założenie, że jeden view będzie mógł przyjąć na siebie obsługę kilku interfejsów typu I*View.
Macie jakieś sprawdzone sposoby? czy dodawanie podczas servic'ów do service locatora np. w konstruktorze obiektu nie jest anty-wzorecem?