2013-10-23 74 views
0

我使用Mvvmcross CROSSCORE在我的項目mvvmcross登錄視圖模型視圖控制器communciation

我想我loginviewmodel綁定到loginviewcontroller

我勢必命令登錄按鈕。應用程序等待,直到它得到一個登錄響應,這是存儲在loginViewModel本身..

我怎樣才能傳達給了loginviewcontroller ---關於登錄狀態和登錄錯誤消息,如果有的話

我可以訪問我的loginviewcontroller裏面的viewmodel datacontext ???如何 ?

什麼是溝通的最佳方式在視圖模型的任何項背(我基本上意味着所有的非UI綁定表項)

+0

如果您發佈了一些顯示您正在做的事情的代碼,這個問題會更容易回答。 – Stuart

回答

1

一個最好的方法,解決視圖模型的相互依存關係是使用使用MessageBus一個鬆散耦合的計算策略/事件聚合器模式。有一個plugin for MvvmCross。或者你可以使用優秀的TinyMessenger

原則上,當使用這種方法時,您不再在任意通知的發佈者和使用者之間建立硬引用。相反,通知會在消息總線上發佈,並且每個人都可以自由地收聽和訂閱。

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的視頻,它們展示瞭如何的ViewModels和視圖包括錯誤信息和裝載對話框之間的溝通很多其他的例子 - 例如N = 34只表示一個進度對話框的執行 - https://github.com/MvvmCross/NPlus1DaysOfMvvmCross/tree/master/N-34-Progress

的N + 1個視頻的完整索引可用上http://mvvmcross.wordpress.com

顯然不是所有的這些都是適合你的Crosslight公司的發展方針,但是這是你可以允許您的自定義mvvm方法填補空白 - 這是您在自定義框架中編寫的代碼。