更新Shell扩展,新增弹窗功能。https://www.cnblogs.com/dalgleish/p/18920441

BasicDialogBox.xaml代码,简单一个按钮,用于弹出对话框。

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:tk="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
             x:Class="MauiViews.MauiDemos.Book._03.BasicDialogBox"
             Title="BasicDialogBox" HeightRequest="300" WidthRequest="300"
             MinimumHeightRequest="150" MinimumWidthRequest="200">
    <Button Text="Click Me" Clicked="Button_Clicked" Margin="0,10"/>
</ContentPage>

对应的cs代码

using CommunityToolkit.Maui;
using CommunityToolkit.Maui.Extensions;
using Shares;

namespace MauiViews.MauiDemos.Book._03;

public partial class BasicDialogBox : ContentPage
{
	public BasicDialogBox()
	{
		InitializeComponent();
    }
    private void Button_Clicked(object sender, EventArgs e)
    {
		Shell.Current.Popup("MauiViews.MauiDemos.Book._03.Dialog", true);
    }
}

大家已经注意到了,这个需要弹出一个叫Dialog的窗口。建立一个ContentView的Dialog。xaml代码如下。

<?xml version="1.0" encoding="utf-8" ?>
<ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:tk="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
             x:Class="MauiViews.MauiDemos.Book._03.Dialog"
             HeightRequest="300" WidthRequest="300"
             MinimumHeightRequest="150" MinimumWidthRequest="200">
    <tk:DockLayout>
        <Label tk:DockLayout.DockPosition="Top" Text="This is a Test"/>
        <StackLayout tk:DockLayout.DockPosition="Bottom" Orientation="Horizontal"
             HorizontalOptions="End" VerticalOptions="End">
            <Button Text="OK" Margin="10,10,2,10" Padding="3,3,3,3"/>
            <Button Text="Cancel" Margin="10,10,2,10" Padding="3,3,3,3" Clicked="Button_Clicked"/>
        </StackLayout>
    </tk:DockLayout>
</ContentView>

对应的cs代码

using Shares;

namespace MauiViews.MauiDemos.Book._03;

public partial class Dialog : ContentView
{
	public Dialog()
	{
		InitializeComponent();
	}

    private void Button_Clicked(object sender, EventArgs e)
    {
		Shell.Current.ClosePopup();
    }
}

运行效果

 

 至于ContentView的内容,大家可以根据自己实力发挥内容了。

 

posted on 2025-06-15 10:13  dalgleish  阅读(13)  评论(0)    收藏  举报