3.确认弹窗(ConfirmPopup)

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

环境:.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.效果

只确认的弹窗

 

可选择的弹窗确认

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java复习篇 数据结构:链表第二节 哨兵

目录 单向链表哨兵 初始 头插 思路 代码 尾插 思路 遍历 遍历验证头插 尾插代码 尾插测试 get 思路 代码 测试 insert 思路 代码 测试 remove 移除头结点 提问 移除指定位置 测试 单向链表哨兵 单向链表里面有一个特殊的节点称为哨兵节点&#xff0c;…

MacOS 无法ping 通 github.com 解决方案

ping github.com 会显示请求超时&#xff1a; PING github.com (192.30.253.112): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 Request timeout for icmp_seq 2 Request timeout for icmp_seq 3 Request timeout for icmp_seq 4 Request …

一文了解Ceph原理以及常见ceph指令

一、Ceph介绍 什么是分布式存储&#xff1f; 与集中式存储相反&#xff0c;分布式存储通常采用存储单元集群的形式。并且具有在集群节点之间进行数据同步和协调的机制。其目的是为了通过服务器解决大规模&#xff0c;高并发情况下的Web访问问题。 Ceph是一个统一的、分布式的存…

如何利用H5页面引导关注公众号-数灵通

随着流量获取成本的增加&#xff0c;许多企业开始寻找新的引流渠道来储存流量。H5小活动成为了一种有效的引流方式&#xff0c;并且在客户之间传递&#xff0c;形成了裂变效应。企业开始将目光转向H5网站&#xff0c;希望通过引导客户关注公众号来提升品牌影响力。 为了实现这一…

143基于matlab的2D平面桁架有限元分析

基于matlab的2D平面桁架有限元分析&#xff0c;可以改变材料参数&#xff0c;输出平面结构外形&#xff0c;各桁架应力&#xff0c;位移及作用力。可查看节点力&#xff0c;程序已调通&#xff0c;可直接运行。 143 matlab 平面桁架 有限元分析 桁架应力 (xiaohongshu.com)

温湿度传感器原理解析,温湿度传感器的应用场景有哪些?

作为常见的检测装置&#xff0c;现在已经有大大小小几十种传感器出现在我们的日常生活中。作为能够测量环境温度和湿度的传感器&#xff0c;温湿度传感器正是最常见的传感器之一&#xff0c;作为温湿度监测系统的一部分&#xff0c;被广泛应用于智慧机房、智慧楼宇、智慧农业等…

重构改善既有代码的设计-学习(三):重新组织数据

1、拆分变量&#xff08;Split Variable&#xff09; 有些变量用于保存一段冗长代码的运算结果&#xff0c;以便稍后使用。这种变量应该只被赋值一次。 如果它们被赋值超过一次&#xff0c;就意味它们在函数中承担了一个以上的责任。如果变量承担多个责任&#xff0c;它就应该被…

外贸干货!社媒营销养号全攻略:10个必须知道的养号技巧

大家都知道&#xff0c;养号已经成为任何希望在WhatsApp、Facebook、TikTok等社交媒体平台上取得成功的跨境电商和营销人员的必备技能。在本文中&#xff0c;我们将深入探讨如何高效地进行养号&#xff0c;以及如何在海外社交媒体批量养号的过程中避免封号&#xff0c;确保你的…

Jenkins全局工具配置

目录 Jenkins全局工具全局工具配置Settings 文件配置Maven配置JDK配置Git配置 Jenkins全局工具 我们在安装了Jenkins之后&#xff0c;就可以开始使用Jenkins来进行一些自动化构建发布工作&#xff0c;但是开始之前我们还需要进行全局工具的配置&#xff0c;Jenkins全局工具配置…

如何使用 NFTScan API 检索 NFT 合约地址下 Transactions 数据

对于大多数人而言&#xff0c;获取某 NFT 合约地址下的全量交易记录是十分有挑战性的&#xff0c;不仅涉及到对区块链技术的深入了解以及使用相应的工具和资源&#xff0c;还需要处理区块链上的智能合约和交易数据&#xff0c;并将其与外部数据源进行整合分析。通常&#xff0c…

【UAT阶段】测试计划分享

前面我有分享UAT阶段注意事项&#xff0c;今天跟大家分享UAT测试计划包含哪些内容&#xff1a; 希望该计划能给大家在实际项目中有所帮助&#xff1b;

求职应聘找工作,你一定会遇到的人才测评

信息时代&#xff0c;越来越多的公司在招聘时引入了人才测评机制。企业和单位希望通过人才测评在广大的应聘者中&#xff0c;找到符合自己要求的人才。虽然很多应聘者能力和简历都比较出众&#xff0c;但却在最开始的人才测评中吃了亏。有的公司很看重人才测评结果。测评就相当…

WinSCP下载安装并实现远程SSH本地服务器上传文件

文章目录 1. 简介2. 软件下载安装&#xff1a;3. SSH链接服务器4. WinSCP使用公网TCP地址链接本地服务器5. WinSCP使用固定公网TCP地址访问服务器 1. 简介 ​ Winscp是一个支持SSH(Secure SHell)的可视化SCP(Secure Copy)文件传输软件&#xff0c;它的主要功能是在本地与远程计…

2017年认证杯SPSSPRO杯数学建模A题(第二阶段)安全的后视镜全过程文档及程序

2017年认证杯SPSSPRO杯数学建模 A题 安全的后视镜 原题再现&#xff1a; 汽车后视镜的视野对行车安全非常重要。一般来说&#xff0c;汽车的后视镜需要有良好的视野范围&#xff0c;以便驾驶员能够全面地了解车后方的道路情况。同时&#xff0c;后视镜也要使图像的畸变尽可能…

leetcode2859-计算K置位下标对应元素的和

题目链接 2859. 计算 K 置位下标对应元素的和 - 力扣&#xff08;LeetCode&#xff09; 解题思路 枚举nums的每一个下标i&#xff1b;统计i的二进制数的1的个数&#xff1b;累加满足bit_count(i) k的nums[i]; 难点&#xff0c;如何统计二进制中1的个数&#xff1f; 例题 …

postgresql12表膨胀解决(不锁表)

查看所有数据库占用磁盘空间 SELECTpg_database.datname AS "数据库名称",pg_size_pretty(pg_database_size(pg_database.datname)) AS "磁盘占用空间" FROMpg_database;发现有个数据库占用空间过大 查询库中所有表占用空间 SELECTtable_name,pg_size_…

固态硬盘优化设置

目录 前言&#xff1a; 关闭Windows Search 禁用系统保护&#xff08;不建议&#xff09; 不建议禁用系统保护原因 关闭碎片整理 提升固态硬盘速度 开启TRIM 合理使用固态硬盘的容量 正确关机 关闭开机自启 前言&#xff1a; 电脑配备固态硬盘就能一劳永逸吗&#…

字符金字塔(C语言刷题)

个人博客主页&#xff1a;https://blog.csdn.net/2301_79293429?typeblog 专栏&#xff1a;https://blog.csdn.net/2301_79293429/category_12545690.html 题目描述 请打印输出一个字符金字塔&#xff0c;字符金字塔的特征请参考样例 输入描述: 输入一个字母&#xff0c;保…

动态规划-96.不同的二叉搜索树

给定一个整数 n&#xff0c;求以 1 ... n 为节点组成的二叉搜索树有多少种&#xff1f; 思路 二叉搜索树特性&#xff1a;左子树的节点全部小于根节点&#xff0c;右子树的节点全部大于根节点 n3&#xff0c;则1&#xff0c;2&#xff0c;3轮流当根节点。 当1为根节点时&am…

一个前端搬砖“专家“的2023年度总结

23年年中的时候&#xff0c;我跟领导进行了一次沟通&#xff0c;讨论了下我后面应该在哪些地方深入。最后我就记得领导那句&#xff1a;缺少总结。 我发现我好像确实缺少总结&#xff0c;我平时会把遇到的问题&#xff0c;感觉值得记录的写在csdn里面&#xff0c;但是都只是问…