Как я могу обработать изменение PageModel в code-behind?

#xamarin.forms #freshmvvm

#xamarin.forms #freshmvvm

Вопрос:

У меня есть Xamarin.Формирует приложение с использованием FreshMvvm. Кто-нибудь может сказать мне, могу ли я использовать привязку для обработки изменения PageModel в исходном коде страницы? Например. если в PageModel произойдет событие, подобное этому:

 public class VideoCallPageModel : BasePageModel
{
    SignalRService signalR;
 ...

    public async override void Init(object initData)
    {
        base.Init(initData);

        signalR = new SignalRService();
        signalR.OnIncomingCall  = SignalR_IncomingCall;
        ...

    private void SignalR_IncomingCall(object sender, VideoCallPeer peer)
    {
        ...
    }
  

Итак, мне нужно обработать в исходном коде страницы запуск этого события OnIncomingCall. Возможно ли это?

Комментарии:

1. почему бы вам просто не заставить VideoCallPageModel вызывать собственное событие, на которое страница могла бы подписаться?

2. @Jason Не могли бы вы, пожалуйста, привести мне пример или какую-нибудь ссылку? Спасибо!

Ответ №1:

определите пользовательское событие в вашей модели

 public delegate void IncomingCallHandler(object sender, VideoCallPeer e);
public event IncomingCallHandler OnIncomingCall;

private void SignalR_IncomingCall(object sender, VideoCallPeer peer)
{  
    if (OnIncomingCall == null) return;
    
    OnIncomingCall(this, peer);
}
  

затем ваша страница может подписаться на нее с помощью обработчика событий