2.依附弹窗(AttachListPopup)

2024-01-26 17:28

本文主要是介绍2.依附弹窗(AttachListPopup),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

环境:.NET 7

        基于基础的Popup对象实现的依附于某个控件的弹窗,弹窗可呈现数组对象,达到较好的选择交互效果。

1.布局

        通过Border实现圆角边框轮廓,然后通过内部的ListView实现列表展示。

<?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.AttachListPopup"xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"x:Name="popup" Color="Transparent" ><VerticalStackLayout x:Name="outLyt"     BackgroundColor="Transparent"><Border    BackgroundColor="White"  StrokeThickness="0"  StrokeShape="RoundRectangle 10,10,10,10"  HorizontalOptions="Center"><VerticalStackLayout  ><ListView    x:Name="lv"    ItemSelected="lv_ItemSelected"  VerticalScrollBarVisibility="Never"><ListView.ItemTemplate><DataTemplate><TextCell   Text="{Binding}"   TextColor="Black" ></TextCell></DataTemplate></ListView.ItemTemplate></ListView></VerticalStackLayout></Border></VerticalStackLayout></toolkit:Popup>

2.代码

        通过传入要依附的控件对象以及需要进行选择的文本集合,可实现弹窗的构建。在选择后通过CloseAsync方法返回选择的数据序号。

/// <summary>
/// 依附列表popup
/// </summary>
public partial class AttachListPopup : CommunityToolkit.Maui.Views.Popup
{/// <summary>/// /// </summary>/// <param name="items">选项</param>/// <param name="anchorView">依附的控件</param>/// <param name="marginLeft">左侧间隔</param>/// <param name="marginBottom">底部间隔</param>/// <param name="width">宽度</param>public AttachListPopup(List<string> items ,View anchorView,double marginLeft,double marginBottom,double width=140){InitializeComponent();lv.ItemsSource = items;this.Anchor=anchorView;outLyt.Padding = new Thickness(anchorView.Width+ marginLeft, 0, 0,  marginBottom);outLyt.WidthRequest = anchorView.Width +marginLeft+ width;}private async void lv_ItemSelected(object sender, SelectedItemChangedEventArgs e){await CloseAsync(e.SelectedItemIndex);}
}

3.使用

var allBTiles = smv.BasicTiles.Select(p => p.Last().DisplayName).ToList();var popup = new AttachListPopup(allBTiles, sender as Button, 12, 20);var result = await this.ShowPopupAsync(popup);if (result != null)
{await smv.ChangedBasicTile((int)result);await Toast.Make($"底图已切换为{allBTiles[(int)result]}").Show();
}

4.效果

        此处展示是基于Android平台,实现点击功能按钮后展示弹窗并选择信息给出反馈。

这篇关于2.依附弹窗(AttachListPopup)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/647520

相关文章

Ubuntu 24.04 LTS怎么关闭 Ubuntu Pro 更新提示弹窗?

《Ubuntu24.04LTS怎么关闭UbuntuPro更新提示弹窗?》Ubuntu每次开机都会弹窗提示安全更新,设置里最多只能取消自动下载,自动更新,但无法做到直接让自动更新的弹窗不出现,... 如果你正在使用 Ubuntu 24.04 LTS,可能会注意到——在使用「软件更新器」或运行 APT 命令时,

鸿蒙开发中实现自定义弹窗 (CustomDialog)

效果图 #思路 创建带有 @CustomDialog 修饰的组件 ,并且在组件内部定义controller: CustomDialogController 实例化CustomDialogController,加载组件,open()-> 打开对话框 , close() -> 关闭对话框 #定义弹窗 (CustomDialog)是什么? CustomDialog是自定义弹窗,可用于广告、中

Unity协程搭配队列开发Tips弹窗模块

概述 在Unity游戏开发过程中,提示系统是提升用户体验的重要组成部分。一个设计良好的提示窗口不仅能及时传达信息给玩家,还应当做到不干扰游戏流程。本文将探讨如何使用Unity的协程(Coroutine)配合队列(Queue)数据结构来构建一个高效且可扩展的Tips弹窗模块。 技术模块介绍 1. Unity协程(Coroutines) 协程是Unity中的一种特殊函数类型,允许异步操作的实现

python恶搞无限弹窗脚本

python恶搞无限弹窗代码; 弹窗可以关闭,但是每次关闭都会增加一个出现; 例如关闭一个弹窗会出现两个弹窗; 初始化出现20个弹窗; 部分核心代码 def on_close(top, root):global window_count# 关闭当前窗口top.destroy()window_count -= 1# 创建两个新窗口create_popups(root, 3)def create_

弹窗选择数据回显

1、打开页面先深度克隆数据 this.chooseQuestionList = this.constant.otherMethods.deepClone(this.details//父级组件传的已经选中的数据); deepClone(source) {if (!source && typeof source !== "object") {throw new Error("error

安卓13删除app 链接库警告弹窗Detected problems with app native

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码修改彩蛋 1.前言   有些客户的APP,打开首次会弹窗提示窗口, Detected problems with app native libraries (please consult log for detail):,需要删除这个窗口,避免挡住用户APP。而且这个提示有些app是以to

[Vue]H5学习之自定义弹窗

目录 自定义弹窗组件完成截图步骤 自定义弹窗组件 完成截图 步骤 第一步: 新建一个Dialog.vue文件: <template><div id="dialog"><div class="border" ><div><p class="titleStyle">打卡</p></div><div class="table-style"><div class="table

WSL 在 Windows 上删除已经安装的 Ubuntu | WSL 再次重装 Ubuntu | cv2.imshow() 弹窗支持

本博文主要参考官网:https://learn.microsoft.com/zh-cn/windows/wsl/install 记录解决 WSL 创建和删除 Ubuntu 子系统的一些细微问题的 解决方案 🥇 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️ 文章目录

实现一个弹窗

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>css-布局-弹窗</title> <meta name="xiaowei" content="1464835043@qq.com"> <style type="text/css"> html,body{margin:0

弹窗相关操作

弹窗使用 文章目录 弹窗使用弹窗-新增表单修改弹窗 弹窗-新增表单 拖拽弹出层组件,补充表单信息 2.点击表单,绑定数据库模型,绑定字段 3.新增弹窗按钮绑定打开或关闭弹出层事件 4.弹窗保存按钮依次绑定 保存表单,打开或关闭弹出层,数据表格查询事件 保存表单作用,跳转页面 无 选择打开或关闭的弹出层 保存后重新刷新数据表格 修改弹窗 1.拖动一个标签进