I think you have the main problems of MVVM. What else you might need is: "What should I do when my application gets too complicated for MVVM?" This happens rather quickly - it is more than a couple of looks, and you get an explosion of vision models, or you get monolithic viewing models that become bulky and very difficult to maintain.
I would suggest studying the structure of Composite WPF (Prism) as one of the solutions to this problem. Prism is an architectural environment that makes it easy to split applications into modules that are more or less independent of each other. Each module can have a view or two (one of them is probably the most common), and each view can have its own presentation model. He copes with the organization of messaging between modules very poorly. The modules are loaded into the shell window, which you can configure, but you need to.
Hope this helps!
source share