zoukankan      html  css  js  c++  java
  • MahApps.Metro怎么调用消息窗口

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

    效果展示:

    1.主窗口代码

    复制代码
      public partial class MainWindow : MetroWindow
        {
            public MainWindow()
            {
                InitializeComponent();
     
                MessageExt.Instance.ShowDialog = ShowDialog;            MessageExt.Instance.ShowYesNo = ShowYesNo;
            }
            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);
            }
            public async void ShowYesNo(string message, string title,Action action)        
    {
           var mySettings = new MetroDialogSettings()
    {
    AffirmativeButtonText = "确定",
    NegativeButtonText = "取消",
    ColorScheme = MetroDialogColorScheme.Theme
    };
    MessageDialogResult result = await this.ShowMessageAsync(title, message, MessageDialogStyle.AffirmativeAndNegative, mySettings); if (result == MessageDialogResult.Affirmative)
    await Task.Factory.StartNew(action);
    } }
    复制代码

    2.单例类代码

    复制代码
        public sealed class MessageExt
        {
            private static readonly MessageExt instance = new MessageExt();
            private MessageExt()
            {
            }
    
            public static MessageExt Instance
            {
                get
                {
                    return instance;
                }
            } 
            /// <summary>
            /// 调用消息窗口的代理事件
            /// </summary>
            public Action<string, string> ShowDialog { get; set; }
            /// <summary>
            /// 调用消息确认窗口的代理事件
            /// </summary>
            public Action<string, string, Action> ShowYesNo { get; set; }
        }
    复制代码

    3.调用方法:

         MessageExt.Instance.ShowDialog("查询", "提示");
    
         MessageExt.Instance.ShowYesNo("查询", "提示", new Action(() => {
                MessageBox.Show("我来了");
         }));

    其他请自行实现。

    官方调用消息窗口的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.")); }
    复制代码

    作者:心存善念
    本文地址:https://www.cnblogs.com/xcsn/p/4531365.html
    欢迎转载,请在明显位置给出出处及链接。

     
     
  • 相关阅读:
    https协议介绍
    最详尽的fidder抓取https请求
    最详尽的datagrip使用
    datagrip安装与破解
    二叉树
    使用nexus搭建maven私库
    markdown利器-小书匠
    java开发-flyway
    .NetCore 入门
    .Net Core 实体生成器
  • 原文地址:https://www.cnblogs.com/javalinux/p/14500547.html
Copyright © 2011-2022 走看看