3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

.NET MAUI カスタムポップアップの表示

Posted at

NuGetパッケージの追加

CommunityToolKit.Mauiのパッケージをインストールをします。
image.png

パッケージの初期化

MauiProgram.csでCommunityToolkitを有効化する必要があります。

MauiProgran.cs
using CommunityToolkit.Maui;

namespace MauiApp2;

public static class MauiProgram
{
	public static MauiApp CreateMauiApp()
	{
		var builder = MauiApp.CreateBuilder();
		builder
			.UseMauiApp<App>()
			.UseMauiCommunityToolkit()
			.ConfigureFonts(fonts =>
			{
				fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
				fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
			});

		return builder.Build();
	}
}

ポップアップの表示

デザインはボタンを表示させる為だけなので適当です。
今回はボタンをクリックした際にポップアップを表示させるようにしてみます。

MainPage.xaml
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiApp2.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Spacing="25"
            Padding="30,0"
            VerticalOptions="Center">

            <Label
                Text="ポップアップを表示するボタンです"
                FontSize="18"
                HorizontalOptions="Center" />

            <Button
                x:Name="PopupBtn"
                Text="Click me"
                Clicked="OnClicked"
                HorizontalOptions="Center" />

        </VerticalStackLayout>
    </ScrollView>

</ContentPage>

クリック時に拡張メソッドを使用してPopupを表示します。

MainPage.xaml.cs
using CommunityToolkit;
using CommunityToolkit.Maui.Views;

namespace MauiApp2;

public partial class MainPage : ContentPage
{
	public MainPage()
	{
		InitializeComponent();
	}

	private void OnClicked(object sender, EventArgs e)
	{
        var popup = new Popup
        {
            Content = new VerticalStackLayout
            {
                Children =
                {
                    new Label
                    {
                        Text = "ポップアップです"
                    }
                }
            }
        };
        this.ShowPopup(popup);
	}
}

実際にdebugで画面を確認してみるとボタンをクリック時にポップアップが表示されています。
画面外をクリックする事でポップアップは閉じます。

image.png
image.png

画面外をタップしてもポップアップを閉じないようにしたい場合は
Popupに対して以下の用に設定すると閉じなくなります。

CanBeDismissedByTappingOutsideOfPopup = false

参考資料

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?