Как правильно организовать обратную связь в MVVM между ViewModel и View
Проблема в следующем:
VM не знает какое у неё View (это может быть и WPF, и Xamarin и прочие). Обработчик ошибок осуществляется по средствам интерфейса. Он един для всех представлений. Имеется так же действия которые совершаются в рамках одного представления, например, после успешной авторизации перейти на страницу или обновить DataGrid.
В настоящий момент проблема решается плохо. Создаётся в VM публичный статический класс Helper, а во View HelperSet который заполняет Helper всеми недостающими действиями.
Как это делается правильно?
Этот метод используется во всех командах:
public static void FireAndForgetSafe(this Action action, IErrorHandler? handler)
{
try
{
action.Invoke();
}
catch (ResultNotFoundException ex)
{
if (handler is IErrorNotFoundHandler handlerWithNotFound)
handlerWithNotFound.HandleResultNotFound(ex);
else handler?.ErrorHandle(ex);
}
catch (Exception ex)
{
handler?.ErrorHandle(ex);
}
}
DataGrid необходимо обновить, то есть вызвать Refresh()