Mvvm 用于在android平台和ViewModel之间共享事件的Xamarin架构
我有一个在Janam XT2掌上电脑上运行的应用程序 我已经为Andriod项目准备好了扫描仪库。我希望能够将扫描的事件传递给viewmodel。我似乎不知道我做错了什么 设置如下所示 使用Prism,VS 2017,MVVM 包含条形码特定类的共享项目。与Android project和用于我的数据的MVVM模块共享 我的当前UI有一个单独的MVVM模块 在android MainActivity中,我有一个对应用程序实例的引用,该实例的属性为EventAggregator。当Android应用程序(MainActivity)中触发扫描仪的接收事件时,我将发布一个ScannerEvent 这是我认为应该的工作方式,但尝试在ViewModel中订阅该事件不会产生任何结果 有人有什么想法吗 编辑:回应Nkosi在评论中的请求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应
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(条形码扫描);
}
已扫描公共虚拟空条形码(扫描结果)
{
}
如果在共享项目中创建事件,它将为引用该事件的每个项目创建不同的类型(这是共享项目的性质,它们类似于链接的源文件,并将在编译时添加到引用程序集)
这样,您可以为发布服务器创建一个事件,为订阅服务器创建另一个事件(即使它们具有相同的名称和外观)。由于订阅服务器订阅的事件与发布服务器发布的事件不同,因此订阅服务器将不会收到其事件
要解决此问题,请废弃共享项目并使用类库。显示如何在视图模型
共享项目中订阅事件表示类库或实际的共享项目?提示:您想要一个类库…不,它是一个共享项目。完成。把我的名单勾掉。