百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
M

Mopups

> 编程语言
开源

弹出 MaUI

342 stars0 点赞0 次浏览
访问官网GitHub

工具介绍

弹出 MaUI

Mopups

Customisable Popups for MAUI

Table of Contents

  • About the Project
  • Getting Started
    • Installation
  • Usage
  • License
  • Contact

About The Project

Mopups is a replacement for the "Rg.Plugins.Popups" plugin for Xamarin. Mopups intends to provide a similar experience to this plugin, however also clean up the code base and provide forward looking enhancements. Developers familar with the original plugin should find it a smooth transition, but we do recommend reading the wiki and reaching out with any issues.

The "PreBaked" is a neat blend of Mopups and AsyncAwaitBestPractices plugins to bring you a quick way to add popups into your MAUIs App using familiar concepts

Platforms Supported (Current)

  • Android
  • iOS
  • Windows
  • MacOS (Mac Catalyst) (This is a bit iffy..)

Below is a video by @jfversluis introducing Mopups

Getting Started

First, you must follow the initialisation

Installation

You can install the nuget by looking up 'Mopups' in your nuget package manager, or by getting it here

Usage

here is an example of what this plugin makes easy (Looks slow due to giphy)

New Example

To Use the plugin for its inbuilt popup pages in a basic setting (Dual/Single Response, Login, TextInput EntryInput,and loader.) All you need are these one liners

SingleResponse Popup Page

csharp
return await SingleResponseViewModel.AutoGenerateBasicPopup(Color.HotPink, Color.Black, "I Accept", Color.Gray, "Good Job, enjoy this single response example", "thumbsup.png");

DualResponse Popup Page

csharp
return await DualResponseViewModel.AutoGenerateBasicPopup(Color.WhiteSmoke, Color.Red, "Okay", Color.WhiteSmoke, Color.Green, "Looks Good!", Color.DimGray, "This is an example of a dual response popup page", "thumbsup.png");

Loader Popup Page

csharp
  await PreBakedMopupService.GetInstance().WrapTaskInLoader(Task.Delay(10000), Color.Blue, Color.White, LoadingReasons(), Color.Black);

Text Input PopupPage

csharp
await TextInputViewModel.AutoGenerateBasicPopup(Color.WhiteSmoke, Color.Red, "Cancel", Color.WhiteSmoke, Color.Green, "Submit", Color.DimGray, "Text input Example", string.Empty);

Entry Input PopupPage

csharp
await EntryInputViewModel.AutoGenerateBasicPopup(Color.WhiteSmoke, Color.Red, "Cancel", Color.WhiteSmoke, Color.Green, "Submit", Color.DimGray, "Text input Example", string.Empty);

LoginPage PopupPage

csharp
var (username, password) = await LoginViewModel.AutoGenerateBasicPopup(Color.WhiteSmoke, Color.Red, "Cancel", Color.WhiteSmoke, Color.Green, "Submit", Color.DimGray, string.Empty, "Username Here", string.Empty, "Password here", "thumbsup.png", 0, 0);

or, to return from the loader a value

csharp
await PreBakedMopupService.GetInstance().WrapReturnableTaskInLoader(IndepthCheckAgainstDatabase(), Color.Blue, Color.White, LoadingReasons(), Color.Black);

you can also add in synchronous functions, however they are wrapped in a task

csharp

private bool LongRunningFunction(int millisecondDelay)
{
    Thread.Sleep(millisecondDelay);
    return true;
}
await PreBakedMopupService.GetInstance().WrapReturnableFuncInLoader(LongRunningFunction, 6000, Color.Blue, Color.White, LoadingReasons(), Color.Black);

That's it! for advanced usage read on

In Version 1.2.0, Mopups has added some pre created pages that can provide users the ability to return data from popups. I have also added the ability to overload the look of these pages and create your own.

I do wish it were simpler, however, with the limited time i have to work on this, it'll have to do.

This set of API's will be used for when the basic API wont cut it, without relying on me making another overload for every situation under the sun.

This API introduces

GeneratePopup Which allows you to supply your own popuppage xaml which will then be attached to whatever VM you called it from.

GeneratePopup(Dictionary propertyDictionary) Which allows you have a dictionary of values that a popup uses, pass and automatically attach to the appropriate properties on the VM side

These are both non-static. and require you to have an instance of the ViewModel to work with. Hence

.GenerateVM() Which provides you with a new instance of that VM

.PullViewModelProperties() Which collects all the properties of a VM, and provides them to you in a dictionary, so you can reuse and also while debugging, check what exists/whats been changed Returns this Dictionary

However, for initialisation, i internally (and you can use) the following function .InitialiseOptionalProperties(Dictionary optionalProperties) Which will attempt to set each of the viewmodel properties with the corrosponding value in the dictionary

So, to fix that, i provide .FinalisePreparedProperties(Dictionary viewModelProperties) Which takes in the Dictionary and creates Dictionary optionalProperties

If you want to make your own Popup Page

This is the real power of this Plugin . If you look at the source for DualResponsePopupPage, or the SingleResponse version you'll notice that they are just simple Xaml Pages. Nothing fancy.

You can create the full thing yourself

  1. Create Xaml Page with codebehind
  2. Create your ViewModel that is associated with the popup, lets call ours InformationPopupPage
  3. Ensure your ViewModel inherits from PopupViewModel where TReturnable is what you want the popuppage to return to its caller
  4. Ensure that your xaml page codebehind inherits from PopupPage (requirement to use rg plugins popup) and IGenericViewModel where TViewModel is your Viewmodel, in our case it will be IGenericViewModel
  5. You're ready to start using it the same as DualResponsePopupPage

or you can provide your own Xaml Page, with a codebehind that inherits from PopupPage and IGenericViewModel where TViewModel is the plugin provided VM you wish to use.

to use this version, just call TViewModel.GeneratePopup()

License

This project uses the MIT License

Contact

My Github,

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

C#androidiosmauipopups

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月18日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言