Mvvm 用于在android平台和ViewModel之间共享事件的Xamarin架构

Mvvm 用于在android平台和ViewModel之间共享事件的Xamarin架构,mvvm,prism,Mvvm,Prism,我有一个在Janam XT2掌上电脑上运行的应用程序 我已经为Andriod项目准备好了扫描仪库。我希望能够将扫描的事件传递给viewmodel。我似乎不知道我做错了什么 设置如下所示 使用Prism,VS 2017,MVVM 包含条形码特定类的共享项目。与Android project和用于我的数据的MVVM模块共享 我的当前UI有一个单独的MVVM模块 在android MainActivity中,我有一个对应用程序实例的引用,该实例的属性为EventAggregator。当Android应

我有一个在Janam XT2掌上电脑上运行的应用程序

我已经为Andriod项目准备好了扫描仪库。我希望能够将扫描的事件传递给viewmodel。我似乎不知道我做错了什么

设置如下所示

使用Prism,VS 2017,MVVM

包含条形码特定类的共享项目。与Android project和用于我的数据的MVVM模块共享

我的当前UI有一个单独的MVVM模块

在android MainActivity中,我有一个对应用程序实例的引用,该实例的属性为EventAggregator。当Android应用程序(MainActivity)中触发扫描仪的接收事件时,我将发布一个ScannerEvent

这是我认为应该的工作方式,但尝试在ViewModel中订阅该事件不会产生任何结果

有人有什么想法吗

编辑:回应Nkosi在评论中的请求

    public ListViewBaseModel(IEventAggregator eventAggregator)
    {
        _eventAggregator = eventAggregator;
        Warehouses = new ObservableCollectionFast<WarehouseListItem>(Client.GetAsync(new WarehouseListQuery() { CompanyID = "SPF", UseBins = 1 }).Result.Results);
        _eventAggregator.GetEvent<BarcodeScannerEvent<ScanResults>>().Subscribe(BarcodeScanned);

    }


    public virtual void BarcodeScanned(ScanResults results)
    {

    }
public ListViewBaseModel(IEventAggregator事件聚合器)
{
_eventAggregator=eventAggregator;
Warehouses=new ObservableCollectionFast(Client.GetAsync(new WarehouseListQuery(){CompanyID=“SPF”,UseBins=1}).Result.Results);
_eventAggregator.GetEvent().Subscribe(条形码扫描);
}
已扫描公共虚拟空条形码(扫描结果)
{
}

如果在共享项目中创建事件,它将为引用该事件的每个项目创建不同的类型(这是共享项目的性质,它们类似于链接的源文件,并将在编译时添加到引用程序集)

这样,您可以为发布服务器创建一个事件,为订阅服务器创建另一个事件(即使它们具有相同的名称和外观)。由于订阅服务器订阅的事件与发布服务器发布的事件不同,因此订阅服务器将不会收到其事件


要解决此问题,请废弃共享项目并使用类库。

显示如何在视图模型
共享项目
中订阅事件
表示
类库
或实际的
共享项目
?提示:您想要一个类库…不,它是一个共享项目。完成。把我的名单勾掉。