mvvmcross login viewmodel-viewcontroller communciation
我在我的项目中使用 Mvvmcross 交叉核
我正在尝试将我的 loginviewmodel 绑定到 loginviewcontroller
我为登录按钮绑定了一个命令。应用程序一直等待,直到它获得登录响应,该响应存储在 loginViewModel 本身中..
我如何将这个信息传达给 loginviewcontroller --- 关于登录状态和登录错误信息(如果有)
我可以访问我的 loginviewcontroller 中的 viewmodel 数据上下文吗???如何 ?
将视图模型中的任何项目返回通信的最佳方法是什么(我基本上是指所有非 UI 绑定项目)
I am using Mvvmcross crosscore in my project
我由此假设您遵循 CrossLight 示例 N=39。
Can I access the viewmodel datacontext inside my loginviewcontroller ??? and how ?
如果您关注了 N=39。然后您可以使用名为
1 2 3 4 5 | public object DataContext { get { return BindingContext.DataContext; } set { BindingContext.DataContext = value; } } |
除此之外,N 1 个视频中还有许多其他示例演示了如何在 ViewModel 和 View 之间进行通信,包括错误消息和加载对话框 - 例如。 N=34 显示了进度对话框的一种实现 - https://github.com/MvvmCross/NPlus1DaysOfMvvmCross/tree/master/N-34-Progress
N 1 个视频的完整索引可在 http://mvvmcross.wordpress.com
上找到
显然,并非所有这些都适合您的 CrossLight 开发方法,但在这里您可以允许您的自定义 mvvm 方法填补空白 - 它是您在自定义框架中编写的代码。
解决视图模型相互依赖关系的最佳方法之一是使用 MessageBus/Event Aggregator 模式的松散耦合方法。 MvvmCross 有一个插件。或者您可以使用出色的 TinyMessenger。
原则上,当使用这种方法时,您不再在任意通知的发布者和消费者之间建立硬引用。相反,通知会在消息总线上发布,每个人都可以自由收听和订阅。