2017-03-24 46 views
0

我使用PCL爲Xamarin一個簡單的應用程序,在我的觀點稱爲lvl1.xaml.cs我有一個方法,從數據庫中刷新視圖在Xamarin的BindingContext

public lvl1() 
{ 
     ques = App.Database.GetQuest(); 
     user = App.database.GetUser(); 
     BindingContext = ques; 
     correctAns = ques.correctAns; 
     InitializeComponent(); 
} 

的問題是要求一個新的問題,我有一個DisplayAlert來表示答案是否正確,但我想在用戶點擊繼續時加載一個新問題,所以我有這個函數(也在lvl1.xaml.cs中),當我debbug時,我看到它進入構造函數,得到新的問題,但視圖仍然顯示舊的問題,我如何刷新它/正確綁定它

async void GameContinue(bool continues) 
    { 
     if (continues) 
     { 
      var lvl = new lvl1(); 
     } 
     else 
     { 
      await Navigation.PopToRootAsync(); 
     } 
    } 

謝謝!

回答

2

當您致電var lvl = new lvl1()時,它將在應用程序的後臺創建新頁面,但您從未實際導航到該頁面。這就是爲什麼你沒有看到新的問題。您需要撥打Navigation.PushAsnyc(lvl);才能真正顯示您創建的新頁面。

您可能還想創建一個單獨的方法來獲取新問題,因此您無需每次都創建一個新頁面。

asnyc void getNewQuestion() 
{ 
    //Get question from db and set the binding context 
    ques = App.Database.GetQuest(); 
    user = App.database.GetUser(); 
    BindingContext = ques; 
    correctAns = ques.correctAns; 
} 
在構造函數

然後:

public lvl1() 
{ 
    getNewQuestion(); 
    InitializeComponent(); 
} 

DisplayAlert後:

async void GameContinue(bool continues) 
{ 
    if (continues) 
    { 
     getNewQuestion(); 
    } 
    else 
    { 
     await Navigation.PopToRootAsync(); 
    } 
}