我有一个Xamarin.Forms应用程序。在第一步中,应用程序的用户必须登录到一个简单的ContentPage登录页面。用户成功登录后,他应该看到MasterDetailPage。
我现在的问题是此代码行会产生死锁。所以这段代码行永远不会完成。
_masterPage.Master = _mainMenuPage;
这是整个功能:
private void SignInButtonClicked(string username, string password)
{
SignInAsync(username, password).ContinueWith(task =>
{
if (task.Result)
{
_signInPage.StopActivityIndicator();
_masterPage.Master = _mainMenuPage;
_masterPage.Detail = _masterNavigationPage;
MainPage = _masterPage;
}
}, System.Threading.CancellationToken.None, System.Threading.Tasks.TaskContinuationOptions.OnlyOnRanToCompletion, System.Threading.Tasks.TaskScheduler.FromCurrentSynchronizationContext());
}
SignInAsync:
private async System.Threading.Tasks.Task<bool> SignInAsync(string username, string password)
{
bool signedIn = true;
//ToDo SignIn logic
if (signedIn)
{
_mainMenuPage = new CPM.Arda.Mobile.Freelancer.Ui.Pages.MainMenu(this);
await _mainMenuPage.InitAsync();
await _mainMenuPage.RefreshDataAsync();
_mainMenuPage.MainMenuItemSelectedEvent += MainMenuItemSelected;
CPM.Arda.Mobile.Freelancer.Ui.Pages.General.Overview overviewPage = new CPM.Arda.Mobile.Freelancer.Ui.Pages.General.Overview(this);
await overviewPage.InitAsync();
await overviewPage.RefreshDataAsync();
_masterNavigationPage = new Xamarin.Forms.NavigationPage(overviewPage);
_masterPage = new CPM.Arda.Mobile.Freelancer.Ui.Pages.Master(this);
await _masterPage.InitAsync();
await _masterPage.RefreshDataAsync();
}
return signedIn;
}
有什么想法吗?这对我来说似乎很奇怪。
答案 0 :(得分:1)
我找到了解决方案。我忘了在CPM.Arda.Mobile.Freelancer.Ui.Pages.MainMenu(MasterDetailPage中的MasterPage)上设置Title属性。 Xamarin.Forms的一个常见错误。
但也不例外,很难找到。 Xamarin有时没用:/