`

Silverlight模拟MSN和QQ即时提示消息框

阅读更多

LSMessagePopup.cs:

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;

namespace Longshine.SLLib.LSControl
{
    public class LSMessagePopup
    {
        /// <summary>
        /// Popup窗口
        /// </summary>
        Popup _popup;

        public LSMessagePopup()
        {
            _popup = new Popup();
        }

        /// <summary>
        /// Popup窗口内容
        /// </summary>
        public FrameworkElement Content
        {
            set { _popup.Child = value; }
            get { return _popup.Child as FrameworkElement; }
        }

        /// <summary>
        /// Popup窗口移动时间
        /// </summary>
        private int _moveDuration = 1;
        public int MoveDuration
        {
            set { _moveDuration = value; }
            get { return _moveDuration; }
        }

        /// <summary>
        /// Popup窗口停留时间
        /// </summary>
        private int _stopDuration = 4;
        public int StopDuration
        {
            set { _stopDuration = value; }
            get { return _stopDuration; }
        }

        /// <summary>
        /// Popup窗口提示
        /// </summary>
        public void Alert()
        {
            double h = Application.Current.Host.Content.ActualHeight;
            double w = Application.Current.Host.Content.ActualWidth;

            _popup.HorizontalOffset = w - Content.Width;

            Storyboard storybord = new Storyboard();
            DoubleAnimationUsingKeyFrames _new_anim = new DoubleAnimationUsingKeyFrames();
            EasingDoubleKeyFrame _frame1 = new EasingDoubleKeyFrame();
            _frame1.Value = h;
            _frame1.KeyTime = new TimeSpan(0, 0, 0, 0);
            EasingDoubleKeyFrame _frame2 = new EasingDoubleKeyFrame();
            _frame2.Value = h - Content.Height;
            _frame2.KeyTime = new TimeSpan(0, 0, 0, MoveDuration);
            EasingDoubleKeyFrame _frame3 = new EasingDoubleKeyFrame();
            _frame3.Value = h - Content.Height;
            _frame3.KeyTime = new TimeSpan(0, 0, 0, MoveDuration + StopDuration);
            EasingDoubleKeyFrame _frame4 = new EasingDoubleKeyFrame();
            _frame4.Value = h;
            _frame4.KeyTime = new TimeSpan(0, 0, 0, MoveDuration + StopDuration + MoveDuration);

            _new_anim.KeyFrames.Add(_frame1);
            _new_anim.KeyFrames.Add(_frame2);
            _new_anim.KeyFrames.Add(_frame3);
            _new_anim.KeyFrames.Add(_frame4);

            storybord.Children.Add(_new_anim);

            Storyboard.SetTarget(_new_anim, _popup);
            Storyboard.SetTargetProperty(_new_anim, new PropertyPath("VerticalOffset"));
            storybord.AutoReverse = false;
            storybord.Begin();

            _popup.IsOpen = true; 
        }
    }
}

 LSMessage.xaml:

<UserControl x:Class="Longshine.SLLib.LSControl.LSMessage"
    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"
    Width="400" Height="100">
    <Grid x:Name="LayoutRoot" Background="White">
        <Border BorderThickness="1" BorderBrush="Black">
            <Grid x:Name="ucGrid" Background="Beige">
                <Grid.RowDefinitions>
                    <RowDefinition/>
                    <RowDefinition/>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>
                <TextBlock Margin="5" Text="是否处理这些消息?" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2"/>
                <Button Width="60" Height="30" Content="Yes" Click="btnYes_Click" Grid.Column="0" Grid.Row="1"/>
                <Button Width="60" Height="30" Content="No" Click="btnNo_Click" Grid.Column="1" Grid.Row="1"/>
            </Grid>
        </Border>
    </Grid>
</UserControl>

 LSMessage.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace Longshine.SLLib.LSControl
{
    public partial class LSMessage : UserControl
    {
        public LSMessage()
        {
            InitializeComponent();
        }

        private void btnYes_Click(object sender, RoutedEventArgs e)
        {
            this.Visibility = Visibility.Collapsed;
        }

        private void btnNo_Click(object sender, RoutedEventArgs e)
        {
            this.Visibility = Visibility.Collapsed;
        }
    }
}

 图片如下:

 

 

  • 大小: 8 KB
分享到:
评论
1 楼 revol 2010-11-17  
请问,你是如何调用LSMessage,并弹出窗口的?

相关推荐

    Silverlight消息框源码SilverlightMessageBoxes

    总结来说,SilverlightMessageBoxes提供了一个强大的、可自定义的Silverlight消息框解决方案,通过理解和研究其源码,开发者不仅可以掌握消息框的实现细节,还可以学习到如何扩展和优化UI组件,提高应用的用户体验。...

    Silverlight模拟Office工具栏

    "Silverlight模拟Office工具栏"是利用Silverlight技术来实现与Microsoft Office应用程序相似的用户界面和功能。这一主题主要关注如何在网页上构建一个看起来和操作起来都像Office应用的工具栏,提升用户体验。 ...

    Silverlight消息框源码

    Silverlight消息框源码 项目描述: 简单,但是对Sliverlight开发者很实用。 很容易和现有的项目整合。 特性: --免费使用 --简单和容易扩展 --窗口包含,消息,错误,确认,文本输入,组合框输入 --提供了图标 --...

    Silverlight学习源代码

    silverlight toolkit中的主题(theme)应用、SilverLight 桌面文件夹效果源码、...模拟Office工具栏源码、Silverlight首页动画效果源码、Silverlight图片滑动源码、Silverlight拖拽特性源码、Silverlight消息框源码

    Silverlight模拟Office工具栏源码

    对于富文本框样式效果,通常会使用Silverlight的RichTextBox控件。这是一个能够处理格式化文本的控件,允许用户进行文本输入、编辑和格式设置。开发者需要深入理解RichTextBox的属性、方法和事件,例如Text、...

    silverlight 类似web qq的聊天对话框及相关功能

    4. **抖动功能**:模拟QQ的抖动功能,可以通过发送特定的抖动消息给对方,然后在接收端显示相应的动画效果,例如窗口抖动或提示音效,以吸引用户的注意力。 5. **字体的改变**: richtextbox提供了更改字体的API,...

    Silverlight 模拟的趣味钢琴附源程序

    比较佩服作者的高超水平,使用Silverlight模拟出的一台趣味钢琴,这可是带有声音的钢琴哦,鼠标点击钢琴的某琴键会发出对应的声音,如果你懂得钢琴,你可以用它弹出一首曲子来,源代码公开,学习Silverlight的朋友...

    Silverlight实现的多图片列表框

    【标题】"Silverlight实现的多图片列表框"是一个基于微软的Silverlight技术构建的应用示例,它展示了如何在Silverlight应用中展示多个图片,并以列表框的形式进行展示。这个项目可能是一个用户界面组件,用于在Web...

    SilverlightQQ项目实践与架构思考

    SilverlightQQ是一个基于微软的Silverlight技术开发的即时通讯应用程序,它展示了Silverlight在构建富互联网应用(RIA)方面的潜力。Silverlight,作为.NET Framework的一部分,允许开发者创建具有丰富的用户体验、...

    Silverlight模拟Windows Ribbon 2010界面源代码

    本项目主题是“Silverlight模拟Windows Ribbon 2010界面源代码”,这涉及到的是如何使用Silverlight技术来复现微软在Windows 7及Office 2010中引入的Ribbon用户界面。 Windows Ribbon界面是一种旨在提高用户对复杂...

    silverlight dataGrid 模拟双击一行事件

    在Silverlight应用开发中,DataGrid控件是一个非常重要的组件,它用于展示和操作数据集。在本场景中,我们关注的是如何在Silverlight 4环境中,利用Visual Studio 2010和Windows XP系统,实现DataGrid控件对用户双击...

    Silverlight

    **Silverlight** 是微软推出的一种基于浏览器的插件技术,用于创建丰富的互动用户体验,它集成了多媒体、动画、图形和应用程序逻辑,使得Web应用能够具备更高质量的视觉表现和更强大的交互功能。以下是对Silverlight...

    [SILVERLIGHT]模拟资源管理器的folder项目

    在"模拟资源管理器的folder项目"中,Silverlight和WCF的结合使用,主要是为了在Web环境中实现类似Windows资源管理器的功能,让用户可以浏览、管理和操作远程服务器上的文件和文件夹。以下将详细讲解这一项目的关键...

    类似QQ的SilverlightPopup

    "类似QQ的SilverlightPopup"项目是基于Silverlight技术实现的一个功能,它模仿了腾讯QQ软件中的右下角消息弹出框的效果。这个弹出框不仅在外观上类似于QQ,还具有渐变消失的功能,从而为用户提供更加友好和直观的...

    Silverlight RichTextBox 富文本框应用

    由于Silverlight的跨平台特性,这个富文本框应用可以无缝地在Windows和Mac OS上的主流浏览器中工作。 总的来说,Silverlight RichTextBox控件为Web应用程序提供了强大的文本编辑功能,使开发者能够构建出具有类似...

    Silverlight浏览器客户端运行插件

    1. **跨平台支持**:Silverlight最初是为了Windows和Internet Explorer设计的,但随着时间的推移,它也支持Mac OS X和不同版本的Firefox、Safari和Chrome浏览器,实现了跨平台兼容性。 2. **丰富的媒体支持**:...

    silverlight中导入和导出Excel

    5. **提示用户**:在客户端,显示一个消息提示用户文件已准备好下载,用户点击链接即可保存Excel文件到本地。 在实现过程中,需要注意处理可能出现的错误,如文件读取异常、网络通信问题等。同时,由于Silverlight...

    easysl经典silverlight框架

    Silverlight是微软推出的一种富互联网应用(RIA)技术,它允许开发者创建具有丰富图形、交互性和媒体体验的Web应用。EasySL框架的出现,为开发者提供了更高效、更便捷的开发工具和组件,使得在Silverlight平台上开发...

    Silverlight和ASP.NET揭秘.rar

    《Silverlight和ASP.NET揭秘》是一本深入探讨这两种技术的权威指南。Silverlight,由微软开发,是一款用于创建丰富的互联网应用...书中的"说明.txt"可能包含了阅读和实践该书的建议,以及作者对相关技术的见解和提示。

Global site tag (gtag.js) - Google Analytics