私はXamarin.Formsのプリズムライブラリを使用しています。プリズムが破損したXamarinフォームを使用したカスタムナビゲーションバー
そして、コントロールテンプレートを使用してカスタムナビゲーションバーを作成します。 (カスタムナビゲーションバーを作成する理由 - 私は、ナビゲーションバーを表示背景の画像に透明にする解決策を見つけられませんでした。また、おそらくナビゲーションバーをカスタマイズしてコントロールを追加します)。
<ControlTemplate x:Key="NavigationPageTemplate">
<AbsoluteLayout BackgroundColor="Transparent">
<Image AbsoluteLayout.LayoutBounds="0,0,1,1"
AbsoluteLayout.LayoutFlags="All"
Aspect="AspectFill"
Source="{TemplateBinding BackgroundImageEx}" />
<ContentView Padding="0,50,0,0"
AbsoluteLayout.LayoutBounds="0,0,1,1"
AbsoluteLayout.LayoutFlags="All">
<ContentPresenter />
</ContentView>
<!--Navigation bar started here -->
<ContentView AbsoluteLayout.LayoutBounds="0,0,1,AutoSize"
AbsoluteLayout.LayoutFlags="PositionProportional, WidthProportional"
BackgroundColor="Transparent">
<ContentView.Padding>
<OnPlatform x:TypeArguments="Thickness"
Android="10"
iOS="10, 20, 10, 0" />
</ContentView.Padding>
<controls:ImageButton Command="{TemplateBinding GoBackCommand}"
HeightRequest="30"
HorizontalOptions="StartAndExpand"
Source="ic_back.png"
WidthRequest="30">
</controls:ImageButton>
</ContentView>
</AbsoluteLayout>
</ControlTemplate>
私の問題は、プリズムナビゲーションで戻るボタンを処理することです。 MyApp.xaml.csファイルを処理しようとしました。
private void Button_OnClicked(object sender, EventArgs e)
{
NavigationService.GoBackAsync();
}
そして、私の最初のページを押すと表示されるので、別のナビゲーションスタックがあるようです。
私はナビゲーションをこのように持っていた:
Navigate("FirstPage");
- >Navigate(MasterDetail/NavigationPage/ViewA)
- >Navigate("ViewB")
ViewB - コントロールテンプレートを使用しています。
ViewB NavigationServiceのカスタム戻るボタンをクリックすると、私をFirstPageに戻します。それは私には間違っています。私はViewAに戻るべきです!
別の質問App.MainPageを変更すると、最初のページを保存する必要がありますか?
に私FIRSTPAGEがメモリに残っていると、それはNavigationStackから削除されていない理由は2つ目の質問を説明し、問題の説明を参照してください? – Dmitry
スタックなので大丈夫だと思うので、LIFO(最後に先入れ先出し)です。 FirstPageを削除することはできません。削除する唯一の方法は、スタックに最初にputtedされたのですべてのページを削除することです。最後に終了します。 – TeoVr81