I'm struggling with the design in a WPF MVVM application. In a few courses I've taken, they say that having a lot of parameters in a constructor is a code smell, but they never address how to deal with it.
In a recent project of mine we used dependency injection to provide services that follow a data adapter pattern. Each of these classes are focused on a type, such as vendor, employee, detail, quote, request for quote, etc.
In this application the high level view models don't do much, but they host several view models, such as: details, file attachments, notes, vendor selection, and vendor requirements. The constructor for the unprocessed details view model takes almost every service in its constructor, but only uses those parameters to construct its child view models.
It doesn't make sense that the main view model would know about a detail view model, because the main view model is only responsible for top level navigation. So what approach can be used to compose the high level view models without a lot of constructor parameters, or is it not a bad practice in this case because the high level view models are responsible for composing the low level view models?