• WPF自定义一个MessageBox介绍


    xaml:

    <Window x:Class="AgileToDo.UMessageBox"
    
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    
            Title="UMessageBox" Height="130" Width="280" WindowStyle="None"   Background="{x:Null}"  
    
            ResizeMode="NoResize"  x:Name="main"
    
            AllowsTransparency="True" WindowStartupLocation="CenterScreen">
    
        <Window.Triggers>
    
            <EventTrigger RoutedEvent="Window.Loaded" >
    
                <BeginStoryboard>
    
                    <Storyboard Name="sbOpShow">
    
                        <DoubleAnimation
    
                        Storyboard.TargetName="main" 
    
                        Storyboard.TargetProperty="Opacity" 
    
                        From="0" To="0.8" Duration="0:0:0.15"/>
    
                    </Storyboard>
    
                </BeginStoryboard>
    
            </EventTrigger>
    
        </Window.Triggers>
    
        <Window.Resources>
    
        </Window.Resources>
    
    
    
        <Border Background="#F03A3A3A" Opacity="1" CornerRadius="3">
    
                <Canvas>
    
                    
    
                <Border Canvas.Top="0" Height="25" Width="{Binding ElementName=main, Path=Width,UpdateSourceTrigger=PropertyChanged}" 
    
                        BorderThickness="0,0,0,1" BorderBrush="#FFEFE2E2">
    
                    <TextBlock x:Name="lblTitle" Text="test" HorizontalAlignment="Left" 
    
                               Foreground="#FFCBBEBE" FontSize="14"
    
                               VerticalAlignment="Center" Margin="5"/>
    
                </Border>
    
                <TextBlock x:Name="lblMsg"
    
                           Foreground="White" FontSize="14" 
    
                           TextWrapping="Wrap" Text="test"
    
                           HorizontalAlignment="Center" Canvas.Left="20"
    
                           Canvas.Top="50" 
    
                           />
    
                <Border BorderBrush="#FF60C1C1" BorderThickness="0.5" Height="22" 
    
                        Canvas.Bottom="10" Canvas.Right="85" MouseLeftButtonDown="Yes_MouseLeftButtonDown"
    
                     Name="border1" Width="49" Background="#FFC7C7C7" CornerRadius="2">
    
                    <TextBlock Text="YES"  HorizontalAlignment="Center" VerticalAlignment="Center"/>
    
                </Border>
    
                <Border BorderBrush="#FF60C1C1" BorderThickness="0.5" Height="22" 
    
                        Canvas.Bottom="10" Canvas.Right="30" MouseLeftButtonDown="No_MouseLeftButtonDown"
    
                    Name="border2" Width="49" CornerRadius="2" Background="#FFC7C7D1">
    
                    <TextBlock Text="NO"  HorizontalAlignment="Center" VerticalAlignment="Center"/>
    
                </Border>
    
            </Canvas>
    
        </Border>
    
    </Window>
    using System.Windows;
    
    using System.Windows.Input;
    
    using System.Windows.Media.Animation;
    
    
    
    
    
    namespace AgileToDo
    
    {
    
        /// <summary>
    
        /// UMessageBox.xaml 的交互逻辑
    
        /// </summary>
    
        public partial class UMessageBox : Window
    
        {
    
            /// <summary>
    
            /// 禁止在外部实例化
    
            /// </summary>
    
            private UMessageBox()
    
            {
    
                InitializeComponent();
    
            }
    
    
    
            public new string Title
    
            {
    
                get { return this.lblTitle.Text; }
    
                set { this.lblTitle.Text = value; }
    
            }
    
    
    
            public string Message
    
            {
    
                get { return this.lblMsg.Text; }
    
                set { this.lblMsg.Text = value; }
    
            }
    
    
    
            /// <summary>
    
            /// 静态方法 模拟MESSAGEBOX.Show方法
    
            /// </summary>
    
            /// <param name="title">标题</param>
    
            /// <param name="msg">消息</param>
    
            /// <returns></returns>
    
            public static bool? Show(string title,string msg)
    
            {
    
                var msgBox = new UMessageBox();
    
                msgBox.Title = title;
    
                msgBox.Message = msg;
    
                return msgBox.ShowDialog();
    
            }
    
    
    
            private void Yes_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    
            {
    
                this.DialogResult = true;
    
                this.Close();
    
            }
    
    
    
    
    
            private void No_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    
            {
    
                this.DialogResult = false;
    
                this.Close();
    
            }
    
        }
    
    }

    调用:

    if (UMessageBox.Show("提示", “消息") == true)
                    {
                        
                    }

    效果:

  • 相关阅读:
    5.MFC基础(五)视图、运行时类信息、动态创建
    4.MFC基础(四)菜单、工具栏、状态栏
    OpenCV Python 4.0安装
    windows批量导出文件名到txt
    *&p理解
    VS调试快捷键配置更改
    数组类的创建(下)
    数组类的创建(上)
    operator用法:隐式类型转换
    C++单例模式
  • 原文地址:https://www.cnblogs.com/fornet/p/3017499.html
Copyright © 2020-2023  润新知