3.确认弹窗(ConfirmPopup)

news2024/9/29 9:23:12

愿你出走半生,归来仍是少年! 

环境:.NET 7

        在开发中,最常用的弹窗之一表示确认弹窗,为了减少重复的开发工作,所以需要基于Popup进行封装。

1.布局

        分为标题、确认内容、按钮三个区域,都是可供调整的。

<?xml version="1.0" encoding="utf-8" ?>
<toolkit:Popup xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiLib.Utility.Controls.Popups.ConfirmPopup"
             xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
             x:Name="popup" 
                xmlns:config="clr-namespace:MauiLib.Utility.Configs;assembly=MauiLib.Utility"
             Color="Transparent" 
               
              >

    <VerticalStackLayout x:Name="outLyt"     BackgroundColor="Transparent">

        <Border  WidthRequest="400"   BackgroundColor="White"  StrokeThickness="1"  StrokeShape="RoundRectangle 10,10,10,10"  HorizontalOptions="Center">

            <VerticalStackLayout  >

                <Label x:Name="lbTitle" Text="标题" HorizontalOptions="Center" Padding="0,10,0,10" FontSize="18"/>

                <Border Stroke="{Static config:ThemeConfig.SubTitle}" BackgroundColor="{Static config:ThemeConfig.SubTitle}" WidthRequest="400" StrokeThickness="0.2"  />

                <Label x:Name="lbContent" 
                       Margin="15" 
                       FontSize="14" 
                       MinimumHeightRequest="100" 
                       VerticalOptions="CenterAndExpand" 
                       Text="确认内容"/>

                <FlexLayout AlignContent="Center" AlignItems="Stretch" Direction="Row">
                    <Button x:Name="btnCancle" 
                      BackgroundColor="Transparent" 
                      TextColor="Black"  
                      FlexLayout.Grow="1"  
                      BorderColor="{Static config:ThemeConfig.SubTitle}"
                      BorderWidth="0.2"
                      CornerRadius="0"   
                      Text="取消" 
                      Clicked="btnCancle_Clicked" />

                    <Button x:Name="btnOk"   
                        BackgroundColor="Transparent" 
                        TextColor="Black"   
                        FlexLayout.Grow="1"  
                        BorderColor="{Static config:ThemeConfig.SubTitle}"
                        BorderWidth="0.2"
                        CornerRadius="0"
                        Text="确认" 
                        Clicked="btnOk_Clicked"/>





                </FlexLayout>


            </VerticalStackLayout>
        </Border>
    </VerticalStackLayout>
</toolkit:Popup>

2.代码

        通过两个不同的构造函数,实现只确认和可选择确认的两种弹窗对象。然后通过回调的方式实现选择后的操作。

public partial class ConfirmPopup : CommunityToolkit.Maui.Views.Popup
{
    private Action OkAction;

    private Action CancleAction;

    /// <summary>
    /// 只确认
    /// </summary>
    /// <param name="title">标题</param>
    /// <param name="content">内容</param>
    /// <param name="okAction">确认回调</param>
    /// <param name="okText">确认按钮文本</param>
    public ConfirmPopup(string title,string content,Action okAction=null,string okText="确认")
	{
		InitializeComponent();

        lbTitle.Text = title;

        lbContent.Text = content;

        btnOk.Text = okText;

        this.OkAction = okAction;

        btnCancle.IsVisible = false;
	}

    /// <summary>
    /// 可确认、取消
    /// </summary>
    /// <param name="title">标题</param>
    /// <param name="content">内容</param>
    /// <param name="okAction">确认回调</param>
    /// <param name="cancleAction">取消回调</param>
    /// <param name="okText">确认按钮文本</param>
    /// <param name="cancleText">取消按钮文本</param>
    public ConfirmPopup(string title, string content, Action okAction,Action cancleAction,string okText="确认",string cancleText="取消")
    {
        InitializeComponent();

        lbTitle.Text = title;

        lbContent.Text = content;

        btnOk.Text = okText;

        btnCancle.Text = cancleText;
         
        this.OkAction = okAction;

        this.CancleAction = cancleAction;
         
    }

    private void btnOk_Clicked(object sender, EventArgs e)
    {
        OkAction?.Invoke();

        this.Close(true);
    }

    private void btnCancle_Clicked(object sender, EventArgs e)
    {
        CancleAction?.Invoke();

        this.Close(false);
    }
}

3.使用

3.1.只需确认的弹窗

ConfirmPopup popup = new ConfirmPopup("通知","当前版本为测试版本,若出现闪退等情况请及时联系管理员进行修复!",null);

this.ShowPopup(popup);

3.2.可选择的确认弹窗

ConfirmPopup popup = new ConfirmPopup("通知", 
    "当前版本为测试版本,若出现闪退等情况请及时联系管理员进行修复!",
    async () =>
    {
      await  Toast.Make("已提交修复工单").Show();
    },
   async () =>
    {
        await Toast.Make("已取消").Show();
    });

this.ShowPopup(popup);

4.效果

只确认的弹窗

 

可选择的弹窗确认

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1409666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二叉树堆的应用实例分析:堆排序 | TOP-K问题

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构冒险记 ✅C语言进阶之路 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 前言一、堆排序1.1 排序思想1.2 堆排序过程&#xff08;图解&#xff09;1.3 堆排序代…

查看代码是否是在GPU上跑的

import torchif torch.cuda.is_available():print("运行在GPU上") else:print("运行在CPU上")进入容器后 如果进入容器后&#xff0c;是没法通过nvidia-smi命令查看显卡型号的&#xff0c;但是环境仍然是GPU在运行。 nvidia-smi 没进入的时候

【笔记】杨继深老师电磁兼容(EMC)课程1-3笔记

视频链接 【杨继深老师电磁兼容&#xff08;EMC&#xff09;课程最新版——精品课_哔哩哔哩_bilibili 1、什么是电磁骚扰&#xff08;EMI&#xff09;&#xff1f; &#xfeff; 第1讲 什么是辐射发射 P1 - 01:39. &#xfeff; 骚扰&#xff1a;主动性的对其他设备造成影响…

从多巴胺到老钱风,品牌如何做好人设营销

在今年开年&#xff0c;又一大旅游城市爆火&#xff0c;被网友称为“讨好型市格”的哈尔滨&#xff0c;第一次有了清晰的人设&#xff0c;哈尔滨也迎来无数游客。其实品牌玩人设营销不止今年&#xff0c;在去年就已经有趋势&#xff0c;比如i人e人营销、“多巴胺穿搭”&#xf…

激光雷达标定入门(7)海康摄像头驱动

如果你在使用海康威视摄像头时遇到了编译报错的问题&#xff0c;可能是链接库的路径配置不正确。下面是解决这个问题的步骤和原理&#xff1a; 1. 克隆海康摄像头驱动代码 首先&#xff0c;你需要将海康摄像头的驱动代码克隆到你的工作空间中。使用以下命令&#xff1a; git…

【docker】解决docker overlay2目录占用大量磁盘空间,导致验证码出不来,报错Can‘t create output stream!

问题&#xff1a; 验证码出现Cant create output stream!报错信息 排查&#xff1a; 所在服务器磁盘使用率已经到达100%&#xff0c;经排查&#xff0c;服务器目录/var/lib/docker/overlay2占用大量磁盘空间&#xff0c; 解决&#xff1a; 使用【docker system prune】命令删…

哪吒监控面板对VPS统一管理

VPS安装Nginx Proxy Manager 可视化面板 - 非必须 Nginx作用是做一个代理&#xff0c;不用代理直接安装哪吒面板也是可以的&#xff0c;但是必须要有一个域名和github账号。 1、更新下VPS系统环境&#xff1a; apt update -y && apt install -y curl socat wget sudo…

安装宝塔面板后k8s所在节点pod无法正常工作解决方法,kubernetes k8s 与宝塔面板冲突解决方法

在实际项目过程中我们使用了k8s 在生产环境中运行管理服务。 但是对服务器的状态管理我们使用了宝塔面板进行 K8s 版本1.2.8 宝塔面板 版本 8.05 操作步骤是这样的。 1.完成1.2.8 k8s的节点安装&#xff0c;并正常运行服务。 过程略 2.安装宝塔面板 ​ yum install -y …

ChromeDriver谷歌驱动最新版安装120/121/122

chromeDriver最新版本下载 最新驱动 https://googlechromelabs.github.io/chrome-for-testing/参考&#xff1a; https://blog.csdn.net/m0_57382185/article/details/134007615

中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要 --九五小庞

原文链接&#xff1a;中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要_滚动新闻_中国政府网 第二篇 坚持创新驱动发展 全面塑造发展新优势 坚持创新在我国现代化建设全局中的核心地位&#xff0c;把科技自立自强作为国家发展的战略支撑&#xff0c;面…

Cute Http File Server 使用文章

下载 官网&#xff1a;http://iscute.cn/chfs 蓝奏下载&#xff1a;https://wwts.lanpw.com/iKP1i1m9572h 开源&#xff1a;https://github.com/docblue/chfsgui 介绍 Cute Http File Server 是国内免费开源的局域网传输服务器软件。 可以不用借助QQ、某信软件传输文件&am…

AI绘图软件:探索未来的创意工具

AI绘图软件有很多&#xff0c;以下是一些比较知名的AI绘图软件&#xff1a; Adobe Photoshop&#xff1a;全球最流行的图像编辑软件之一&#xff0c;具备多种AI功能&#xff0c;如智能修复、智能笔刷等。Corel Painter&#xff1a;一款专业的数字艺术软件&#xff0c;有AI功能…

SpringBoot,TDengine时序数据库,实现物联网,车联网大批量数据更新最佳实践。

简介 TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台&#xff0c;它能安全高效地将大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据进行汇聚、存储、分析和分发&#xff0c;对业务运行状态进行实时监测、预警&#xff0c;提供实时的商业洞察。其…

.NET 跨平台图形库 SkiaSharp 基础应用

写在前面 SkiaSharp 是适用于 .NET 和 C# 的 2D 图形系统&#xff0c;由开源 Skia 图形引擎提供支持&#xff0c;在 Google 产品中广泛使用。 可以在应用程序中使用 SkiaSharp Xamarin.Forms 绘制 2D 矢量图形、位图和文本。支持跨平台&#xff0c;Windows、Linux、Anroid、IO…

IDEA 创建maven项目没有src

环境&#xff1a; IntelliJ IDEA 2022.3.3 (Ultimate Edition) JDK 17 Windows 11 10.0 Maven 3.9.5 创建maven项目的时候没有src目录 试过网上说的重新配置maven库&#xff0c;增加vm-options&#xff0c;并没有什么用。直到我看见了 正常创建就好了。

Spring-简介

一、概念 在向读者描述Spring时&#xff0c;笔者不打算从某处粘贴一段常见的概念性文字糊弄完本专栏的第一篇文章&#xff0c;而是用易于理解的话向读者指出几个重点。 &#xff08;1&#xff09;是框架。何谓框架&#xff1f;就像搭房子一样&#xff0c;框架就如同是墙体结构…

HCIP复习课(重发布实验)

1、ip配置&#xff1a; R1&#xff1a; R2&#xff1a; R3&#xff1a; R4&#xff1a; 2、rip&#xff0c;ospf配置&#xff1a; R1&#xff1a; R2&#xff1a; R3&#xff1a; R4&#xff1a; 3、重发布配置&#xff1a; R1&#xff1a; R2&#xff1a; R3&#xff1a; 检…

Docker网络配置与自定义IP容器通信

目录 前言 一、docker网络配置 1. bridge 虚拟网桥 2. host 网络模式 3. none 网络模式 4. 自定义container网络模式 二、自定义IP容器通信 1. 自定义IP 2. 创建所需容器&#xff08;mysql&#xff0c;tomcat&#xff09; 3. 准备项目资源 4. 构建Nginx实现负载均衡…

内推机会来啦!网络、云计算、数据库岗位招人,最高25K/月!

PaaS工程师任职要求&#xff1a; 1.熟练掌握Java开发语言&#xff0c;具备编程开发能力和脚本维护能力&#xff1b;懂微服务&#xff08;springcloud&#xff09;&#xff1b;熟悉JavaScript语言。 2.熟悉docker镜像原理&#xff0c;dockerfile制作命令与流程&#xff1b;熟悉K…

独立站怎么建设对seo好?

现如今市面上就有不少开源的建站程序可供挑选&#xff0c;哪怕你不懂技术&#xff0c;不懂代码&#xff0c;也能建自己的独立站&#xff0c;效果比不少所谓的用自己技术开发的站都要好&#xff0c;本身做一个网站不难&#xff0c;但你做网站的目的是什么&#xff1f;是为了在搜…