我在我的项目中使用Mvvmcross crosscore
我正在尝试将loginviewmodel绑定到loginviewcontroller
我为登录按钮绑定了一个命令。应用程序等待它获得登录响应,该响应存储在loginViewModel本身..
如何将此信息传达给loginviewcontroller ---关于登录状态和登录错误信息(如果有的话)
我可以访问loginviewcontroller中的viewmodel datacontext吗?如何 ?
在viewmodel中回传任何项目的最佳方法是什么(我基本上是指所有非UI用户绑定项目)
答案 0 :(得分:1)
解决视图模型相互依赖性的最佳方法之一是使用MessageBus / Event Aggregator模式使用松散耦合的approch。有一个plugin for MvvmCross。或者你可以使用优秀的TinyMessenger。
原则上,在使用此方法时,您不再在任意通知的发布者和使用者之间建立硬引用。相反,通知会在消息总线上发布,每个人都可以自由地收听和订阅。
答案 1 :(得分:1)
我在我的项目中使用Mvvmcross crosscore
我假设您遵循CrossLight样本N = 39。
我可以访问loginviewcontroller中的viewmodel datacontext吗?如何 ?
如果你跟着N = 39。然后,您可以使用名为DataContext
的属性访问DataContext - 请参阅https://github.com/MvvmCross/NPlus1DaysOfMvvmCross/blob/master/N-39-CrossLight-Touch/CrossLightTouch/MyViewController.cs#L33
public object DataContext
{
get { return BindingContext.DataContext; }
set { BindingContext.DataContext = value; }
}
除此之外,N + 1视频中还有许多其他示例,演示了如何在ViewModel和Views之间进行通信,包括错误消息和加载对话框 - 例如N = 34显示了进度对话框的一个实现 - https://github.com/MvvmCross/NPlus1DaysOfMvvmCross/tree/master/N-34-Progress
http://mvvmcross.wordpress.com
上提供了完整的N + 1视频索引显然并非所有这些都适合您的CrossLight开发方法,但是您可以在这里使用自定义mvvm方法填补空白 - 这是您在自定义框架中编写的代码。