MahApps.Metro怎么调用消息窗口

网上查看了好多资料,没有找到很清楚明了的结果,经过了多天的研究,无意发现了这个方法来进行全局调用

效果展示:

1.主窗口代码

  public partial class MainWindow : MetroWindow
    {
        public MainWindow()
        {
            InitializeComponent();

            MessageExt.Instance.ShowDialog = ShowDialog;
        }
        public async void ShowDialog(string message, string title = "提示")
        {
            var mySettings = new MetroDialogSettings()
            {
                AffirmativeButtonText = "关闭",
                ColorScheme = MetroDialogColorScheme.Theme
            };
            MessageDialogResult result = await this.ShowMessageAsync(title, message, MessageDialogStyle.Affirmative, mySettings);
        }

 }

2.单例类代码

public sealed class MessageExt
    {
        private static readonly MessageExt instance = new MessageExt();
        private MessageExt()
        {
        }

        public static MessageExt Instance
        {
            get
            {
                return instance;
            }
        }

        public Action<string, string> ShowDialog { get; set; }
    }

3.调用方法:

MessageExt.Instance.ShowDialog("查询", "提示");

其他请自行实现。

官方调用消息窗口的demo代码

 private async void ShowMessageDialog(object sender, RoutedEventArgs e)
        {
            // This demo runs on .Net 4.0, but we‘re using the Microsoft.Bcl.Async package so we have async/await support
            // The package is only used by the demo and not a dependency of the library!
            MetroDialogOptions.ColorScheme = UseAccentForDialogsMenuItem.IsChecked ? MetroDialogColorScheme.Accented : MetroDialogColorScheme.Theme;

            var mySettings = new MetroDialogSettings()
            {
                AffirmativeButtonText = "Hi",  //确定
                NegativeButtonText = "Go away!", //否
                FirstAuxiliaryButtonText = "Cancel",                //第一个自定义按钮, SecondAuxiliaryButtonText为第二个自定义按钮
                ColorScheme = UseAccentForDialogsMenuItem.IsChecked ? MetroDialogColorScheme.Accented : MetroDialogColorScheme.Theme
            };

            MessageDialogResult result = await this.ShowMessageAsync("Hello!", "Welcome to the world of metro!",
                MessageDialogStyle.AffirmativeAndNegativeAndSingleAuxiliary, mySettings);

            if (result != MessageDialogResult.FirstAuxiliary) //这里编写点击后的代码
                await this.ShowMessageAsync("Result", "You said: " + (result == MessageDialogResult.Affirmative ? mySettings.AffirmativeButtonText : mySettings.NegativeButtonText +
                    Environment.NewLine + Environment.NewLine + "This dialog will follow the Use Accent setting."));
        }

        private async void ShowLimitedMessageDialog(object sender, RoutedEventArgs e)
        {
            var mySettings = new MetroDialogSettings()
            {
                AffirmativeButtonText = "Hi",
                NegativeButtonText = "Go away!",
                FirstAuxiliaryButtonText = "Cancel",
                MaximumBodyHeight = 100,
                ColorScheme = UseAccentForDialogsMenuItem.IsChecked ? MetroDialogColorScheme.Accented : MetroDialogColorScheme.Theme
            };

            MessageDialogResult result = await this.ShowMessageAsync("Hello!", "Welcome to the world of metro!" + string.Join(Environment.NewLine, "abc","def","ghi", "jkl","mno","pqr","stu","vwx","yz"),
                MessageDialogStyle.AffirmativeAndNegativeAndSingleAuxiliary, mySettings);

            if (result != MessageDialogResult.FirstAuxiliary)
                await this.ShowMessageAsync("Result", "You said: " + (result == MessageDialogResult.Affirmative ? mySettings.AffirmativeButtonText : mySettings.NegativeButtonText +
                    Environment.NewLine + Environment.NewLine + "This dialog will follow the Use Accent setting."));
        }
时间: 2024-08-28 18:16:27

MahApps.Metro怎么调用消息窗口的相关文章

[ucgui] 对话框4——模式消息窗口

>_<" 这里实现点击灰色窗口的按钮出现一个模式消息窗口,点击OK之后才能再聚焦到灰窗口:点击灰窗口除了按钮的地方,弹出一个非模式窗口. 1 static const GUI_WIDGET_CREATE_INFO _aDialogOrder[] = {//大的一个窗口(刚开始显示的,有一个按钮) 2 { FRAMEWIN_CreateIndirect, "Order vehicle", 0, 20, 50, 480, 360, 0 }, 3 { BUTTON_Cr

JavaScript子窗口调用父窗口变量和函数的方法

在做一个父窗口开启子窗口并且在子窗口关闭的时候调用父窗口的方法,达到局部刷新的目的. 父窗口: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns=" http://www.w3.org/1999/xhtml&qu

PyQt4消息窗口

默认情况下,如果我们单击了窗口标题栏上的X标记,窗口就会被关闭.但是有些时候我们想要改变这一默认行为.比如,我们正在编辑的文件内容发生了变化,这时若单击X标记关闭窗口,编辑器就应当但出确认窗口. #!/usr/bin/python # -*- coding:utf-8 -*- import sys from PyQt4 import QtGui class MessageBox(QtGui.QWidget): def __init__(self, parent = None): QtGui.QW

(转)C#在父窗口中调用子窗口的过程(无法访问已释放的对象)

C#在父窗口中调用子窗口的过程: 1. 创建子窗口对象 2. 显示子窗口对象 笔者的程序中,主窗体MainFrm通过菜单调用子窗口ChildFrm.在窗体中定义了子窗口对象,然后在菜单项点击事件中,加入了如下代码来创建和显示子窗口: Private childFrm myChildFrm = null; //定义子窗口对象 private void OpenChildFrmToolStripMenuItem_Click(object sender, EventArgs e) { myChildF

Winform应用程序实现通用消息窗口

记得我之前发表过一篇文章<Winform应用程序实现通用遮罩层>,是实现了透明遮罩的消息窗口,功能侧重点在动图显示+消息提醒,效果看上去比较的炫,而本篇我又来重新设计通用消息窗口,功能重点在于消息提醒.进度报告,当然如果大家时间,可以将两种相结合,那样就会更完美了,我这里仍是以实现功能为主,由于代码相对简单,我就直接贴上所有代码,大家可以直接复制到本地测试,若发现问题可自行改正或反馈给我,我来完善,谢谢! using System; using System.Collections.Gener

WPF 使用MahApps.Metro UI库

在WPF中要想使用Metro风格是很简单的,可以自己画嘛.. 但是为了节省时间,哈,今天给大家推荐一款国外Metro风格的控件库. 本文只起到抛砖引玉的作用,有兴趣还是推荐大家上官网,Thanks,官网地址 我会在底部发出. 实现效果 其实下面仅仅是对窗体的一个简单设置,以及放了些简单的按钮,这是本文抛砖引玉的示例程序,其实还有非常多的好玩的样式,包括动画效果. 安装 MahApps.Metro 这里依然推荐使用NuGet来进行安装,如下图所示. 然后在NuGet中搜索 MahApps.Metr

IE 扩展调用主窗口中的函数

在函数名前加上 parentWindow 即可.如: <script> var doc = external.menuArguments.document doc.parentWindow.函数名(); </script>IE 扩展调用主窗口中的函数

在Delphi的窗口单元中,如何调用其它窗口的单元。

在Delphi的窗口单元中,如何调用其它窗口的单元.(转载) . 在Delphi中简单的调用单元 unit实例 一,新建一个工程文件,默认的文件是unit1,代码如下:unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton;

一个Metro风格的开源项目 MahApps.Metro

目录: Metro风格控件 Metro主题 MahApps.Metro文档地址:http://mahapps.com/MahApps.Metro/ 源码地址:https://github.com/MahApps/MahApps.Metro 在VS中可以装一个NuGet插件来下载MahApps.Metro.dll和MahApps.Metro.Resources.dll. MahApps.Metro文档写的很详细了.可以先了解下如何使用.在往下看这篇文章. 文档也给出了一些Examples: Win