私のアプリケーションの出発点となるログインページがあります。私は、ログインページ内の2つの別々の場所でこれを行うXamarinフォームの奇妙なNavigationBarの動作
Navigation.PushAsync(new Dashboard());
:私は次のコードを使用して、私のダッシュボードページを起動し、ログインページから
NavigationPage.SetHasNavigationBar(this, false);
:このページには、次のコードで隠されたナビゲーションバーがあります。最初はログインページのコンストラクタ内にあり、アクティブなユーザセッションをチェックし、2番目はログインのためのボタンクリックを処理するメソッドの内部にあります。
だから私はこのようNavigation.PushAsync()
を呼び出す:
第一の方法:
public Login()
{
NavigationPage.SetHasNavigationBar(this, false);
InitializeComponent();
var loginSession = App.DataService.CheckUserSession();
if(loginSession != null)
{
Navigation.PushAsync(new Dashboard());
}
}
第二の方法:
public void OnLogin(object o, EventArgs e)
{
Navigation.PushAsync(new Dashboard());
}
そして物事が奇妙に行き始める場所です。ボタンをクリックしてDasboardページを開くと(2番目の例を使用)、Dasboardページは正常にロードされ、独自のNavigationBarがあります。しかし、ユーザーセッションが見つかったときに(1番目の方法で)Dasboardページを開くたびに、DasboardページにNavigationBarが表示されなくなります。物事をさらに奇妙なものにするために、Dasboardページから別のページ(Settingsと言うことができます)までナビゲートし、Dasboardに戻ると、Dasboardページでナビゲーションバーが正常に機能します。ログインページのナビゲーションバーを隠すコードを削除しようとしましたNavigationPage.SetHasNavigationBar(this, false);
これはログインページに表示されるナビゲーションバーが表示されますが、ダッシュボードへのナビゲーション(1番目の方法を使用)ではナビゲーションバーはログイン時と同じままですページ。
私のすべてのページ(ログイン、ダッシュボード、設定)が子どものContentPage
であり、その代わりにNavigationPage
から継承する必要があるかどうかは疑問でしたか?
現時点で私のNavigationBar
で起こっていることについて本当に混乱しています。
どのようにアプリケーションの 'MainPage'を設定していますか? –
私のアプリケーションクラスを意味しますか? –
はい、あなたの 'Application'クラスでは、ログインページはどのように最初に表示されますか?そのコードを投稿してください。 –