2014-02-14 23 views
1

我在使用MvvmCross在Xamarin中構建一個跨平臺的應用程序,我已經將我的ViewModels聲明在我的核心中,並且首先在我的Windows 8項目上工作,這要歸功於Stuart Lodge誰與此link以前回答我,我可以在頁面的加載綁定事件本身(使用交互DLL):我如何在Android中綁定事件(MvvmCross)

<i:Interaction.Triggers> 
    <i:EventTrigger EventName="Loaded"> 
     <i:InvokeCommandAction Command="{Binding MyICommandThatShouldHandleLoaded}" /> 
    </i:EventTrigger> 
</i:Interaction.Triggers> 

我怎樣才能做到在Android中使用MvvmCross一樣嗎?

謝謝!

回答

1

你能告訴你正在試圖完成的加載事件嗎?

當試圖實現一個視圖模型時,通常我不想在UI方面考慮問題。

根據平臺的不同,UI的工作方式可能有所不同。

實現視圖模型時思考的一種方式是認爲您將要使用視圖模型進行測試,而無需UI。在這種情況下,您的應用程序應該能夠在沒有UI連接的情況下運行。如果您需要用戶輸入(如用戶名和密碼),則您編寫的測試代碼是設置視圖模型的屬性,類似於UI綁定到這些屬性時數據綁定的操作方式:

loginViewModel.Username = "admin"; 
loginViewModel.Password = "12345"; 

例如,在您提供的鏈接中,我不確定爲什麼需要了解有關顯示登錄屏幕的主窗口加載事件。

的MainViewModel coressponding主窗口可致電

pulic class MainViewModel : MvxViewModel 
{ 
    public void Init() 
    { 
     ShowViewModel<LoginViewModel>(); 
    } 
} 

這僅僅是一個例子,它可能不是那麼好,但我只是想表現出不同的方式。

請記住,從視圖模型的角度來看,ShowViewModel並不意味着太多。

視圖模型只是調用顯示另一個視圖模型,這是'不知何故'連接到視圖。 這可能意味着顯示一個彈出窗口,或導航到另一個頁面/窗口等。視圖模型不需要知道。這主要是因爲UI可以在每個平臺上以不同的方式工作,或者每個平臺上的UI需求可能不同(因爲UI模式可能不同)。

MvvmCross有一個很好的方法來繞開默認的ShowViewModel行爲(通過編寫一個平臺特定的自定義演示者)。基本上,您可以控制如何在平臺上執行View-Model類型的ShowViewModel請求。

+0

基本上我需要「加載」事件,因爲一旦我的應用程序的第一頁加載,我會運行一個命令,確定是否保存任何用戶數據。如果沒有數據保存,我會保留在當前頁面上,如果數據存在,我立即導航到下一頁。 換句話說,我將使用該事件來執行「初始」檢查。 – Maximus

+0

Andrei現在我明白了你的答案,看完這個鏈接後,謝謝! https://github.com/MvvmCross/MvvmCross/wiki/ViewModel--to-ViewModel-navigation – Maximus

+0

很高興聽到它對你有幫助 –