はじめに

Xamarin.FormsでShellを使用する時のタブやナビゲーションバーの表示・非表示のコントロール方法を調べたメモです。
XAML、コードビハインド双方から簡単に実現できました。

環境

Xamarin.Forms 4.3.0

前提

プロジェクトでShellを利用していることが前提の記事となっています。
Shellを使うようにするにはマイクロソフトのドキュメントが参考になります。

XAMLでやる方法

以下のようにContentPageタグの属性でShell.NabBarIsVisibleやShell.TabBarIsVisibleを使うことができます。
falseとすることでナビゲーションバー、タブそれぞれ非表示となります。

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="HogeHogeApp.Menu" 
             Title="sample"
             Shell.NavBarIsVisible="false"
             Shell.TabBarIsVisible="false">

コードビハインドでやる方法

XAMLと同じ記述をContentPageを継承している任意のクラスの任意の箇所で使用できるみたいです。
NavBarIsVisibleやTabBarIsVisibleはコードビハインドから見ると読み取り専用プロパティとなっていて直接値を設定できないため、SetNavBarIsVisibleメソッドとSetTabBarIsVisibleメソッドを使います。
第一引数をthisに、第二引数で表示・非表示をコントロールできました。

public partial class SamplePage : ContentPage
{
  // 略

  private async void OnClick(object sender, EventArgs e) {
    // ナビゲーションバーを非表示
    Shell.SetNavBarIsVisible(this, false);
    // タブを非表示
    Shell.SetTabBarIsVisible(this, false);
    someButton.IsEnabled = false;
    loader.IsVisible = true;

    LongLongMethod();

    loader.IsVisible = false;
    someButton.IsEnabled = true;
    // ナビゲーションバーを表示
    Shell.SetNavBarIsVisible(this, true);
    // タブを表示
    Shell.SetTabBarIsVisible(this, true);
  }
}
Category
Tags
No Tag

No responses yet

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です