Опираясь на то, что сказал Кент. , .
С архитектурной точки зрения вашему классу ViewModel не нужно ничего знать о MainVM. Все, что ему нужно знать, следует передать экземпляру ViewModel, чтобы он мог оставаться атомарным и не беспокоиться о вещах, которые его вызывают. С твердой точки зрения, это принцип обращения зависимостей.
Какие бы свойства из MainVM не были доступны в ViewModel, они должны быть переданы как часть конструкции экземпляра ViewModel. Лично я фанат включения их в конструктор, но вы также можете выставить их как свойства.
Метод overkill (который я не рекомендую) настраивает ваш конструктор на использование экземпляра MainVM и передает this
в конструктор. e.g.:
public class ViewModel
{
private readonly MainVM _parent;
public MainVM Parent => _parent;
public ViewModel(MainVM parent)
{
_parent = parent;
}
}
тогда при создании вашей ViewModel вы можете просто:
ViewModel vm = new ViewModel(this);