[英]Change MainPage in Xamarin.Forms based on Run-Time Configuration
[英]Cannot get MainPage in Xamarin.Forms to react/change
我嘗試了不同的方法來更改我的MainPage,但它沒有發生。 基本上,當我的App啟動時,它需要執行一些Async任務來初始化所有內容,然后顯示真正的主頁。 我首先在App.cs中嘗試了事件處理程序。 我可以確認事件處理程序確實在調試器中觸發。 但是,切換主頁的代碼未成功執行。 我的用戶界面沒有任何變化。 此代碼如下:
private void UnitStatusModelChanged(object sender, EventArgs e)
{
UnitStatusModel = _unitStatusMonitor.UnitStatusModel;
UnitStatusViewModel = new UnitStatusViewModel(UnitStatusModel, InputResourceHandler);
MainPage = new MainTabbed(UnitStatusViewModel, InputResourceHandler);
Debug.WriteLine("Switched page to " + UnitStatusModel.Version.Name);
}
protected override void OnStart()
{
_unitStatusMonitor.UnitStatusChanged += new UnitStatusModelChangedEventHandler(UnitStatusModelChanged);
_commandQueue.StartQueue();
}
我認為也許以這種方式設置MainPage並不是可行的方法。 因此,我嘗試將MainPage設置為空白的NavigationPage,然后在應用就緒后將模型頁面推到頂部。 這也沒有效果。
var newPage = new MainTabbed(
new UnitStatusViewModel(_unitStatusModel, inputResourceHandler),
inputResourceHandler
);
App.Current.MainPage.Navigation.PushModalAsync(newPage);
我可以確認,如果我使用MainTabbed頁面啟動應用程序,則該頁面會顯示,因此MainTabbed應該不會出現問題。 再次,我還驗證了調試器中這些代碼行的執行情況,沒有拋出異常。 盡管如此,MainPage仍沒有變化。 是什么賦予了?
異步完成后,當您調用PushModalAsync(或任何UI東西)時,請檢查線程。 確保它在主線程上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.