我该如何处理在后台代码中更改PageModel?

问题描述

我有一个使用FreshMVVM的Xamarin.Forms应用程序。有人可以告诉我是否可以使用绑定来处理在Page的后台代码中更改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事件时,我需要处理Page的代码隐藏。有可能吗?

解决方法

在模型中定义自定义事件

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);
}

然后您的页面可以使用事件处理程序进行订阅