0

我在我的项目中使用 Mvvmcross 交叉核

我正在尝试将我的 loginviewmodel 绑定到 loginviewcontroller

我为登录按钮绑定了一个命令。应用程序一直等待,直到它获得登录响应,该响应存储在 loginViewModel 本身中。

我如何将其传达给 loginviewcontroller --- 关于登录状态和登录错误消息(如果有)

我可以访问我的 loginviewcontroller 中的 viewmodel 数据上下文吗???如何 ?

与视图模型中的任何项目进行通信的最佳方法是什么(我基本上是指所有非 UI 绑定项目)

4

2 回答 2

1

我在我的项目中使用 Mvvmcross 交叉核

我由此假设您遵循 CrossLight 样本 N=39。

我可以访问我的 loginviewcontroller 中的 viewmodel 数据上下文吗???如何 ?

如果您遵循 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 和 View 之间进行通信,包括错误消息和加载对话框 - 例如 N=34 显示了进度对话框的一种实现 - https://github.com/MvvmCross /NPlus1DaysOfMvvmCross/tree/master/N-34-Progress

N+1 个视频的完整索引可在http://mvvmcross.wordpress.com上找到

显然,并非所有这些都适合您的 CrossLight 开发方法,但在这里您可以允许您的自定义 mvvm 方法填补空白 - 它是您在自定义框架中编写的代码。

于 2013-10-23T14:02:57.363 回答
1

解决视图模型相互依赖关系的最佳方法之一是使用 MessageBus/Event Aggregator 模式的松散耦合方法。MvvmCross有一个插件。或者您可以使用出色的TinyMessenger

原则上,当使用这种方法时,您不再在任意通知的发布者和消费者之间建立硬引用。相反,通知会在消息总线上发布,每个人都可以免费收听和订阅。

于 2013-10-23T13:28:38.303 回答