I apologize if I do not say that, but it seems to me that:
- View and ViewModel would be well in one layer. Still, the ViewModel is more about presentation logic.
- you should not replace the ViewModel with its interface, but instead it is better that ViewModel accept the interface of the service working with data in the designer. In the view of the model there is a husk (I usually have) relating to the view, for example, the flag IsBusy (data loading). Such a husk will need to be duplicated from the interface to the interface if using
IViewModel , and this is not necessary.
If not DDD , but simpler, then it would be possible to have 3 layers (as an option).
- User Interface (v, vm)
- Application Services (repository management, logic, application service interfaces )
- Persistence (repositories working with the database)
This is probably something close to CRUD . I accept criticism.
disclaimer: speaking from the WPF bell tower
The following scheme and everything that is written below no longer applies to the question . Simply, Monk in his response showed a diagram of dependencies of layers, it seems for DDD . I wanted to give an example of how it worked for DDD . In addition, there was already a finished diagram (of assembly dependencies). A little more complicated, and maybe about the same.

Used IoC . Interfaces were in the following builds:
- in Application Service Layer - interfaces for services
- Domain Layer - domain level interfaces
internal. - VladD