Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

C# Xamarin

Xamarin.Formsで画面遷移を実装する手順について+ソースコードも紹介

投稿日:2020年9月8日 更新日:

<目次>

(1) Xamarin.Formsで画面遷移を実装する手順について
 (1-1) 遷移先ページの追加
 (1-2) 画面遷移ロジック追加
  (1-2-1) ボタンコントロールの追加
  (1-2-2) NavigationPageへの変更
  (1-2-3) イベントハンドラの追加
 (1-3) 実装結果・イメージ動画

(1) Xamarin.Formsで画面遷移を実装する手順について

当記事ではXamarin.Formsで画面遷移を実装する手順について紹介いたします。また、手順と併せて最小プログラムも掲載します(Xamarin.Formsの新規プロジェクト作成直後から実装した例)。
ざっくりした全体像として、SubPageを新規作成した後に、MainPage側でそのSubPageに飛ぶボタンと画面遷移のロジック(イベントハンドラ)を追記する事で画面遷移を実現します。

(図111)⓪

(1-1) 遷移先ページの追加

①初期状態の確認
次の「(図111)①」がXamarin.Formsの新規プロジェクトを作成した直後の状態です。初期状態ではメイン画面(MainPage)しか無い状況ですので、新しくサブ画面(SubPage)を追加していきます。

(図111)①

②サブ画面の追加
ソリューションエクスプローラーで右クリックして「追加」→「新しい項目」を選択します。

(図111)②

③画面の種類選択
左ペインで「Visual C# アイテム」を選択し、中央では「コンテンツページ」を選択して、中央下部に任意の画面名を入力して、右下の「追加」を押下します。

(図111)③

④追加結果の確認
追加が完了すると、右側のソリューションエクスプローラーにて「SubPage.xaml」とそのコードビハインドの「SubPage.xaml.cs」が追加された事が確認できます。

(図111)④

本記事では、ラベルを少し目立たせるために表示文言やフォントサイズを変更します。これは見た目の装飾のためであり、画面遷移とは関係ないので任意ですが、MainPageと異なる文言にはした方が遷移した時の変化が分かり易いと思います。

//修正前
<Label Text="Welcome to Xamarin.Forms!"

//修正後
<Label Text="Welcome to Xamarin.Forms! This is your SubPage!"
	FontSize="40"

目次にもどる

(1-2) 画面遷移ロジック追加

(1-2-1) ボタンコントロールの追加

MainPage.xamlにボタンコントロール(=ボタン部品)の追加をします。「.xaml」はUI(画面)の定義体で、このファイルに「コントール」と呼ばれる画面部品を配置していきます。

<追加コード>

<Button Text="Button_ChangeText"
		Clicked="Button_Clicked"
		HeightRequest="100"
		WidthRequest="200" />

<全体:MainPage.xaml>

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d"
             x:Class="IT0118_App1.MainPage">

    <StackLayout>
        <Label  x:Name="label"
	            Text="Welcome to Xamarin.Forms! Rainbow Planet!"
                FontSize="20"
                HorizontalOptions="Center"
                VerticalOptions="CenterAndExpand" />
        <Button Text="Button_ChangeText"
		        Clicked="Button_Clicked"
		        HeightRequest="100"
		        WidthRequest="200" />
    </StackLayout>

</ContentPage>

(図121)

目次にもどる

(1-2-2) NavigationPageへの変更

Xamarin.Formsでページ遷移を行うためには「App.xaml」にてページ表示の仕組みを「NavigationPage」に変更します。
 
<追加コード>
//書き換え前(Before)
MainPage = new MainPage();

//書き換え後(After)
MainPage = new NavigationPage(new MainPage());

<全体:App.xaml.cs>

using System;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;

namespace IT0118_App1
{
    public partial class App : Application
    {
        public App()
        {
            InitializeComponent();

            MainPage = new NavigationPage(new MainPage());
        }

        protected override void OnStart()
        {
            // Handle when your app starts
        }

        protected override void OnSleep()
        {
            // Handle when your app sleeps
        }

        protected override void OnResume()
        {
            // Handle when your app resumes
        }
    }
}

(図122)

目次にもどる

(1-2-3) イベントハンドラの追加

「MainPage.xaml.cs」にButtonクリック時のイベントハンドラを記述します。具体的にはMainPageからSubPageに遷移するロジックになります。

<追加コード>

private void Button_Clicked(object sender, EventArgs e)
{
	Navigation.PushAsync(new SubPage());
}

<全体:MainPage.xaml.cs>

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;

namespace IT0118_App1
{
    // Learn more about making custom code visible in the Xamarin.Forms previewer
    // by visiting https://aka.ms/xamarinforms-previewer
    [DesignTimeVisible(false)]
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }
        private void Button_Clicked(object sender, EventArgs e)
        {
            Navigation.PushAsync(new SubPage());
        }
    }
}

(図123)Before

(図123)After

目次にもどる

(1-3) 実装結果・イメージ動画

上記のプログラムをF5でデバッグして、Andoroidのエミュレーターを起動したのが下図です。

(図131)Before

(図131)After

(操作動画)

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-C#, Xamarin

執筆者:


comment

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

関連記事

C#のdynamic型とは?使いどころやvarとの違いもご紹介

  <目次> (1) C#のdynamic型とは?使いどころやvarとの違いもご紹介  (1-1) dynamic型とは?  (1-2) dynamic型の使いどころ  (1-3) 動作確認 …

C#のエラー「CS1069~このアセンブリへの参照を追加する事を検討してください」の対処方法+実際のソース例も掲載

<目次> (1) C#のエラー「CS1069~このアセンブリへの参照を追加する事を検討してください」の対処方法  (1-1) 発生状況・エラーメッセージ  (1-2) 原因  (1-3) 対処法 (1 …

SOAP通信のサンプルをご紹介(ASP.NET Web Service=ASMXを使ったHelloWorld)

  <目次> (1) SOAP通信のサンプルをご紹介(ASP.NET Web Service=ASMXを使ったHelloWorld)  (1-1) SOAP通信とは?  (1-2) SOAP …

ASP.NETのActionResultの戻り値の種類について

  <目次> (1) ASP.NETのActionResultの戻り値の種類について  (1-1) はじめに  (1-2) ASP.NETのActionResultの戻り値の種類  (1-3 …

ASP.NET MVCのルーティングの基本

<目次> (1) ASP.NET MVCのルーティングの基本  (1-1) 構文  (1-2) サンプルプログラム   ・RouteConfig.cs   ・Controller   ・View  ( …

  • English (United States)
  • 日本語
Top