- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
引用 N=9 我想做的是代替 ILocationService 我有自己的 INavigationService 和导航服务类。
public class NavigationService :INavigationService
{
private readonly IMvxMessenger _navigator;
public NavigationService(IMvxMessenger navigator)
{
_navigator = navigator;
}
public void OnNavigation(PurchasesDataEntryViewModel vm)
{
var navigationMessage = new NavigationMessage(this,vm);
_navigator.Publish(navigationMessage);
}
}
这是我的 Messenger 类:
public class NavigationMessage : MvxMessage
{
public string ShopID { private set; get; }
public int TotalStock { private set; get; }
public int TotalPurchases { private set; get; }
public int Stock1 { private set; get; }
public int Stock2 { private set; get; }
public int Stock3 { private set; get; }
public int Purch1 { private set; get; }
public int Purch2 { private set; get; }
public int Purch3 { private set; get; }
public string Name { private set; get; }
public string CPrice { private set; get; }
public int CSales { private set; get; }
public string BrandID { private set; get; }
public string CatID { private set; get; }
public int LadgePur { private set; get; }
public decimal LPrice { private set; get; }
public int LPurch { private set; get; }
public int LSales { private set; get; }
public int LStock { private set; get; }
public int LStock1 { private set; get; }
public string MeasureID { private set; get; }
public NavigationMessage(object sender, PurchasesDataEntryViewModel vm)
: base(sender)
{
ShopID = vm.ShopID;
TotalStock = vm.TotalStock;
TotalPurchases = vm.TotalPurchases;
Stock1 = vm.Stock1;
Stock2 = vm.Stock2;
Stock3 = vm.Stock3;
//Purch1 = vm.Purch1;
//Purch2 = vm.Purch2;
//Purch3 = vm.Purch3;
Name = vm.Name;
CPrice = vm.CPrice;
// CSales = vm.CSales;
BrandID = vm.BrandID;
CatID = vm.CatID;
LadgePur = vm.LadgePur;
LPrice = vm.LPrice;
LPurch = vm.LPurch;
LSales = vm.LSales;
LStock = vm.LStock;
LStock1 = vm.LStock1;
MeasureID = vm.MeasureID;
}
我想要实现的是将上述值发送给我的订阅者 PurchasesDataEntryViewModel
private readonly IDataService _dataService;
private readonly MvxSubscriptionToken _token;
public PurchasesDataEntryViewModel(IDataService dataService,INavigationService service, IMvxMessenger navigator)
{
_dataService = dataService;
_token = navigator.Subscribe<NavigationMessage>(OnNavigationMessage);
}
private void OnNavigationMessage(NavigationMessage navigationMessage)
{
ShopID = navigationMessage.ShopID;
.
.
.
}
我不能让它工作。我需要了解发布/订阅的交互和生命周期。两个viewmodel怎么理解就会怎么沟通。我需要以某种方式告诉我的 Messenger 服务我想通过 Messenger 类将参数从 ViewModel A 发送到 ViewModel B。这是我第一次使用该插件,请原谅我的愚蠢问题。
最佳答案
Messenger
类Publish
和Subscribe
方法的使用在https://github.com/MvvmCross/MvvmCross/wiki/MvvmCross-plugins#Messenger 中介绍。
在我看来,您对问题代码中调用的使用看起来不错 - 您的导航服务发布的任何消息都应该被所有现有的 PurchasesDataEntryViewModel
s 接收
更新在您评论之后:
when I publish the message I'am expecting my debugger to fire the constructor of the PurchasesDataEntryViewModel class
这是不正确的。
任何信使(MvvmCross 与否)只能在现有对象之间传递消息 - 它不能动态创建新的监听器。
如果您确实想要创建一个新对象来响应消息,那么您将需要从 Factory
对象订阅该消息类型 - 而那个 Factory
对象然后需要在其消息处理程序中创建新对象。
private readonly MvxSubscriptionToken _token;
public Factory(IMvxMessenger navigator)
{
_token = navigator.Subscribe<NavigationMessage>(OnNavigationMessage);
}
private void OnNavigationMessage(NavigationMessage navigationMessage)
{
switch (navigationMessage.NavType)
{
case NavType.One:
var newOne = new One(navigationMessage.Args);
// use newOne;
// ...
// ...
}
}
对于 UI 导航,您需要确保您编写的任何 Factory
对象也将创建 View
以及 ViewModel
.
在实践中,如果您想编写自己的导航服务,则需要针对您支持的每个平台编写一个特定的导航服务 - 因为每个平台都有不同的导航技术和生命周期(Android 有Intent
s,WP 有 Uri
s,iOS 有基于代码的转换,等等)。
由于 MvvmCross 已经提供了一个跨平台的导航服务,您可能会发现它更容易使用并使用自定义演示器对其进行调整 - 这在以下内容中进行了讨论:
关于c# - MVVMCross Messenger 插件安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19799048/
我将一个用 TypeScript 编写的游戏上传到 Facebook Instant Games。我有一个 super 简单的调用来从我自己的服务器获取真实的 timestamp。 在将构建上传到 I
我正在尝试在 Facebook Messenger 中使用的对话流中添加建议信息 block 。但它不工作,我无法理解 这是我的自定义负载 { "facebook": { "attachm
我正在向 Facebook 发送一条结构化消息,其中包含指向图像文件(该文件位于 Amazon S3 中)的 URL。消息的结构根据 https://developers.facebook.com/d
我正在创建一个 FB Messenger 聊天机器人。发送图像 URL 链接时通过什么 JSON 格式生成预览。 在上面的截图中,你可以看到如果我手动发送一个 URL,FB messenger 会生成
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 2年前关闭。 Imp
我创建了一个 Facebook Messenger 机器人应用程序,我想知道当 1000 人或更多人使用时我的 Messenger 机器人应用程序是否能正常运行。有什么方法可以对其进行压力测试吗?例如
目前,这是我打开共享对话框以通过信使共享链接的代码: let invitationLink = NSURL(string:"http://somelink.com") if (UIAp
我创建了一个 Facebook 页面和 Facebook Messenger 机器人。当机器人按照我的个人资料设计工作时,我都被吓坏了。但是当我要求 friend 测试它时。我的页面名称不会出现在 M
我在尝试从 webview 获取用户上下文时收到错误代码 2018164。错误代码是2018164,但是我在文档中找不到。有人有这方面的任何信息吗? MessengerExtensions.getCo
我一直在构建一个 Facebook Messenger 机器人,但在我服务器上的 webhook 上接收来自 Messenger 的消息时遇到问题。我使用 Send API 和 Webhooks 已经
我的 Messenger 应用程序今天早些时候(几个小时前)获得了批准;应用管理页面说: Approved: pages_messaging 但是现在有人(以前不是测试人员)尝试使用它,我遇到了错误。
所有信使机器人是否一次只与一个用户直接交互?机器人可以加入两个或更多人的小组并与他们交谈吗? 最佳答案 目前,Facebook Messenger 机器人只能在一对一的基础上工作。 原因之一可能是隐私
我正在尝试读取未通过 Symfony Messenger 发送的排队消息(在 RabbitMQ 中)。似乎 Messenger 添加了一些标题,例如 headers: type: App\Me
我正在创建一个 Facebook 机器人,机器人在其中发送 5 个图像附件。 下面是发送 1 张图像的 Json 模板 "message":{ "attachment":{ "type":"ima
我正在尝试测试订阅 messaging_optins event 的 webhook ,但我正在努力手动触发该事件。 文档似乎表明使用“发送到 Messenger”插件应该会触发此事件,但在设置按钮后
我在我们的一个网站上集成了 Facebook 客户插件。我按照开发人员文档中的说明进行操作。当有活跃的 facebook session 时,它工作正常。但是,当没有事件的 fb session 时,
有一种方法可以将我的位置从移动客户端发送到 facebook-messenger,但是如何从机器人发送一些位置? (信使平台api) 当我尝试从 bot 发送类似的结构时,出现错误:(#100) Un
在开发机器人时,通常的做法是向用户显示打字指示器,而机器人在后台工作,但是是否可以检测相反的情况:用户是否正在打字或空闲?我在文档或谷歌中找不到任何信息。有人知道如何实现这一目标吗? 最佳答案 目前无
我的网站是用6角搭建的,在网站上,我得到了一个按钮和一个Facebook聊天信使。我希望当我点击按钮时,Facebook聊天将打开并聚焦光标。诸如此类的事情。有可能吗?。这是我的代码,在app.mod
我正在尝试在对 Dialogflow 的一个 Webhook 调用中发送多条消息,这些消息应传递给 Messenger。现在我的 Webhook 响应一个有问题的 JSON 正文: { 'fu
我是一名优秀的程序员,十分优秀!