微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

silverlight 利用poup和定时器写自动消失的框

新建自定义控件:


<UserControl x:Class="EasySL.UI.Dialogs.PopupBorder"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <UserControl.Resources>
        <Storyboard x:Name="myStoryboard">
            <DoubleAnimation
                Storyboard.TargetName="LayoutRoot"
                Storyboard.TargetProperty="Opacity"
                    From="1.0" To="0" Duration="0:0:1"
                    AutoReverse="True" />
        </Storyboard>
    </UserControl.Resources>

    <Grid x:Name="LayoutRoot" >
        <!--<Border Background="#FFCC0D0D" BorderThickness="0" CornerRadius="5">-->
        <Border BorderThickness="0" CornerRadius="5">
            <Border.Background>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="#FF27A3D7" Offset="0.51"/>
                    <GradientStop Color="#FF76C2E1" Offset="0.004"/>
                    <GradientStop Color="#FF27A3D7" Offset="1"/>
                </LinearGradientBrush>
            </Border.Background>
            <Border.Effect>
                <DropShadowEffect BlurRadius="10" Color="#FFCC0D0D" ShadowDepth="0"/>
            </Border.Effect>
            <TextBlock x:Name="txtMessage" HorizontalAlignment="Center" Margin="10" VerticalAlignment="Center"
                       FontSize="28" Foreground="White" FontFamily="Comic Sans MS"
                       >This is a Simple Example</TextBlock>
        </Border>
    </Grid>
</UserControl>

封装重构,新建MessageBoxHelper类:





using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Controls.Primitives;
using EasySL.UI.Dialogs;

namespace EasySL.UI.Common
{
    public class MessageBoxHelper
    {
        #region 提示消息

        /// <summary>
        /// 弹出提示消息标题提示,按钮为确定
        /// </summary>
        /// <param name="msg"></param>
        public static void ShowMessage(string msg)
        {
            //ShowFriendMessage(msg,"提示",MessageBoxButton.OK);

            PopupBorder pborder = new PopupBorder();
            pborder.txtMessage.Text = " " + msg + " ";

            pborder.UpdateLayout();

            Popup popUp = new Popup();
            popUp.Child = pborder;


            pborder.myStoryboard.Completed += delegate
            {
                popUp.IsOpen = false;
            };
            pborder.myStoryboard.Begin();


            popUp.InvokeOnLayoutUpdated(() =>
            {
                popUp.Margin = new Thickness(
                    (App.Current.Host.Content.ActualWidth - pborder.ActualWidth) / 2,(App.Current.Host.Content.ActualHeight - pborder.ActualHeight) / 2,0);

                System.Threading.Timer timer = new System.Threading.Timer(
                    (state) =>
                    {
                        popUp.dispatcher.BeginInvoke(() =>
                        {
                            popUp.IsOpen = false;
                        });
                    },null,500,500);
            });
            popUp.IsOpen = true;

        }

        /// <summary>
        /// 弹出提示消息按钮为确定
        /// </summary>
        /// <param name="msg"></param>
        public static void ShowMessage(string msg,string title)
        {
            ShowMessage(msg,title,MessageBoxButton.OK);
        }

        /// <summary>
        /// 弹出提示消息
        /// </summary>
        /// <param name="msg"></param>
        public static void ShowMessage(string msg,string title,MessageBoxButton buttons)
        {
            MessageBox.Show(msg,buttons);
        }

        #endregion
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐