Основная метрика: Вы можете проверить это ?
Представление абсолютно нуждается в ссылке на модель представления. Как еще он может получить информацию, необходимую для отображения? Обычно достаточно иметь модель представления в DataContext
представления, но это все еще составляет зависимость. Без виртуальной машины в DataContext
представление было бы бесполезным.
Иногда вам нужно представление, чтобы перезвонить ВМ. Обычно я просто делаю это в своем коде:
public MyViewModel ViewModel
{
get { return DataContext as MyViewModel; }
}
private void _someEventHandler(object sender, EventArgs )
{
ViewModel.SomeMethod();
}
Держать ссылку на вид из модели вида - вот где вам нужно быть осторожным. Если виртуальная машина зависит от конкретной реализации представления, она тесно связана с представлением и в результате ее сложно проверить.
Если виртуальной машине нужно каким-то образом взаимодействовать с представлением, вы можете абстрагировать требования в интерфейс и заставить представление реализовать этот интерфейс. Затем, когда представление загружается, оно может предоставить ВМ ссылку на себя, с которой ВМ может взаимодействовать.