Xamarin 使用MvvmCross在活动中触发事件

Xamarin 使用MvvmCross在活动中触发事件,xamarin,mvvmcross,Xamarin,Mvvmcross,我有一个MvxFragmentActivity,它加载谷歌地图并在地图上放置标记。创建地图和标记的代码非常特定于Droid,因此它在活动中。标记是基于ViewModel中的对象创建的,每个对象都包含lat/long坐标。只要我在Init方法中加载对象,这就可以正常工作。此后,我将LoadObjects方法移动到一个服务,并在另一个线程上调用它。通过这种方式,UI具有响应性。但是,当加载完成时,如何在活动中调用该方法 以下是我在活动中的当前代码(此代码不应更改,只是它的调用方式): 我的viewM

我有一个MvxFragmentActivity,它加载谷歌地图并在地图上放置标记。创建地图和标记的代码非常特定于Droid,因此它在活动中。标记是基于ViewModel中的对象创建的,每个对象都包含lat/long坐标。只要我在Init方法中加载对象,这就可以正常工作。此后,我将LoadObjects方法移动到一个服务,并在另一个线程上调用它。通过这种方式,UI具有响应性。但是,当加载完成时,如何在活动中调用该方法

以下是我在活动中的当前代码(此代码不应更改,只是它的调用方式):

我的viewModel中的代码:

    private void BeginLoadItems()
    {
        _loadItemsService.Load();
    }

    // This is triggered by a message
    private void OnLoadItemsComplete(LoadCompleteMessage message)
    {
        Items = message.Items;
    }
我的服务代码:

    public void Load()
    {
        ThreadPool.QueueUserWorkItem(state =>
            {
                var results = _repository.Retrieve();
                _messenger.Publish(new LoadCompleteMessage(this, results));
            });
    }

设置以下各项时,您已经触发了一个事件:

    Items = message.Items;
这将触发属性名为“Items”的PropertyChanged


有关地图绑定的详细信息,请参见-尽管使用Droid时,您需要使用标记而不是注释。

设置以下内容时,您已经触发了一个事件:

    Items = message.Items;
这将触发属性名为“Items”的PropertyChanged

有关地图绑定的更多信息,请参见-尽管对于Droid,您需要使用标记而不是注释