Где-то слышал, что не рекомендуется подписываться на события VM из View.
У меня в VM есть событие public event Action SomeEvent на которое я подписываюсь в конструкторе страницы
public MyPage()
{
InitializeComponent();
var ViewModel = new ViewModel();
DataContext = ViewModel;
ViewModel.SomeEvent += SomeMethod;
}
При срабатывании события метод SomeMethod на стороне View производит некоторые изменения.
Допустима ли такая конструкция и какие могут быть альтернативы?
IVM, который будет содержать это событие, аVMбудет реализовывать этот интерфейс, то такая зависимость от интерфейса вполне допустима. Зависеть от реализации, конечно, нехорошо. Но, возможно, тут стоит объявить об этой зависимости явно, например, запрашивая ее в конструкторе. Также стоит продумать вопрос о том, что делать приDataContextChanged, ведь тот кто владеет вашей вьюхой, имеет право изменить у нее DataContext – Андрей NOP Nov 30 '18 at 13:11