什麼是調用xamarin形式的服務和加載數據的最佳場所最好的地方MVVM
直到現在我打電話視圖模型構造和裝載服務數據
我有一個新的局面 - 在我的應用我檢查網絡連接,如果它沒有連接到互聯網主窗體我將不會加載數據並顯示一個模式窗體說網絡不可用支票。如果重新檢查成功,將彈出模式,但由於數據未加載,主表單爲空。
所以在這種情況下,我必須在出現覆蓋函數時編寫服務調用。在模式彈出後被調用。沒關係。但問題在於,我們每次瀏覽該視圖時都會進行服務呼叫。
請指引我調用這些服務
什麼是調用xamarin形式的服務和加載數據的最佳場所最好的地方MVVM
直到現在我打電話視圖模型構造和裝載服務數據
我有一個新的局面 - 在我的應用我檢查網絡連接,如果它沒有連接到互聯網主窗體我將不會加載數據並顯示一個模式窗體說網絡不可用支票。如果重新檢查成功,將彈出模式,但由於數據未加載,主表單爲空。
所以在這種情況下,我必須在出現覆蓋函數時編寫服務調用。在模式彈出後被調用。沒關係。但問題在於,我們每次瀏覽該視圖時都會進行服務呼叫。
請指引我調用這些服務
有關問題的最好的地方,你可以使用C#活動(發行者 - 訂閱)作爲解決方案 寫在視圖模型稱爲InternetDisconnectedEvent事件。在視圖後面的代碼中訂閱該事件(.xaml.cs)
當互聯網斷開連接時,在視圖中進行UI更改。
欲瞭解更多有關事件&代表,check this tutorial
我現在不在尋找解決方案,我已經實施。但是,我要求最好的地方,使服務調用加載數據到視圖模型中聲明的對象在xamarin – Krishna
在問題中添加您的代碼片段。我會嘗試! –
「......但問題是,每一次當我們導航到該視圖就會撥打服務電話。」
創建一個標誌(一個布爾值屬性),說在視圖模型IsLoaded
(或視圖,根據您目前的實現),即設置爲false
開始。然後添加一個邏輯,在調用服務之前檢查IsLoaded
標誌。如果IsLoaded
是false
,運行您當前檢查互聯網連接,調用服務等的邏輯..最後更新IsLoaded
至true
。
我會建議**不**要在構造函數中進行服務調用。該構造函數用於**初始化**,並非真正適用於任何繁重的操作。 –
@MikeEason所以最好的做法是OnAppearing?你的意思是view或viewmodel的構造函數? – Krishna
好問題,我有同樣的問題。可惜沒有更多的答案。 – ArieKanarie