在我们开发SilverLight时,在加载大的数据时,需要很长时间,为了给用户一个好的印象,我们给一个正在加载的提示,下面我就把简单的程序贴出来,希望对大家有帮助

waiting.xaml
<UserControl x:Class="Example.Portal.Common.Waiting"
    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"
    designWidth="640" designHeight="480">
    <Grid x:Name="LayoutRoot" Width="Auto" Height="Auto">
        <Grid Background="Black" Opacity="0.2"></Grid>
        <Canvas Width="320" Height="50">
            <Rectangle RadiusX="8" RadiusY="8" Stroke="{x:Null}" Fill="#19000000" Height="49" Width="316" Canvas.Left="6" Canvas.Top="3"/>
            <Rectangle RadiusX="8" RadiusY="8" Stroke="{x:Null}" Fill="#19000000" Height="48" Width="316" Canvas.Left="5" Canvas.Top="3"/>
            <Border Height="50" Width="320" Background="#FFFFFFFF" BorderBrush="#FFACACAC" BorderThickness="1,1,1,1" CornerRadius="8,8,8,8">
                <Rectangle RadiusX="8" RadiusY="8" Stroke="{x:Null}" Margin="1,1,1,1">
                    <Rectangle.Fill>
                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                            <GradientStop Color="#FFFFFFFF"/>
                            <GradientStop Color="#FFE9E9E9" Offset="1"/>
                        </LinearGradientBrush>
                    </Rectangle.Fill>
                </Rectangle>
            </Border>
        </Canvas>
        <Grid Width="320" Height="50" VerticalAlignment="Center">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="5*" />
                <ColumnDefinition Width="10*" />
                <ColumnDefinition Width="80*" />
                <ColumnDefinition Width="5*" />
            </Grid.ColumnDefinitions>
           <!--waiting.png自己可以找一个图片-->
            <Image Stretch="None" Source="../Resources/Image/waiting.png" Grid.Column="1" Opacity="0.3" />
            <Image x:Name="WaitingImage" Stretch="None" Source="../Resources/Image/waiting.png" Grid.Column="1" RenderTransformOrigin="0.5,0.5">
                <Image.RenderTransform>
                    <RotateTransform Angle="0"></RotateTransform>
                </Image.RenderTransform>
            </Image>
            <TextBlock x:Name="titleText" FontFamily="Calibri" FontSize="13" Foreground="#FF000000" HorizontalAlignment="Left" Grid.Column="3"/>
            <TextBlock Text="Waiting..." x:Name="waitingText"
       FontFamily="Verdana" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Column="2"/>
        </Grid>
    </Grid>
    <UserControl.Resources>
        <Storyboard x:Name="storyboard">
            <DoubleAnimation Storyboard.TargetName="WaitingImage"  Duration="0:0:0.7" To="360" Storyboard.TargetProperty="(UIElement.RenderTransform).RotateTransform.Angle" RepeatBehavior="Forever"></DoubleAnimation>
            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="waitingText" Storyboard.TargetProperty="Opacity" RepeatBehavior="Forever">
                <SplineDoubleKeyFrame KeyTime="00:00:0.0" Value="0"/>
                <SplineDoubleKeyFrame KeyTime="00:00:0.5" Value="1"/>
                <SplineDoubleKeyFrame KeyTime="00:00:1.0" Value="0"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
    </UserControl.Resources>
</UserControl>

waiting.cs

using System.Windows.Controls;
namespace Example.Portal.Common
{
    public partial class Waiting : UserControl
    {
        public Waiting()
        {
            InitializeComponent();
            this.storyboard.Begin();
        }
        /// <summary>
        /// 标题
        /// </summary>
        public string Title
        {
            get { return this.titleText.Text; }
            set { this.titleText.Text = value; }
        }
        public void SetLoadingText(string text)
        {
            this.waitingText.Text = text;
        }
        public void SetLoadingText()
        {
            this.waitingText.Text = "正在处理,请稍候......";
        }
    }
}

下面咱们再定义一个类,对外接口,以后直接调用下这个类就可以了
window.cs
using System;
using System.Windows;
using System.Windows.Controls;
namespace Example.Portal.Common
{
    public class Windows
    {
        private static Waiting waiting;
        private static string waitingName = "waiting";
        static Windows()
        {
            if (waiting == null)
            {
                //取得主要应用程序界面
                UserControl rootPage =Application.Current.RootVisual as UserControl;
                if (rootPage != null)
                {
                    //取得应用程序界面中waiting节点
                    waiting = rootPage.FindName(waitingName) as Waiting;
                }
            }
        }
        /// <summary>
        /// 显示等待信息
        /// </summary>
        /// <param name="message"></param>
        public static void ShowWaiting(string message)
        {
            try
            {
                if (waiting != null)
                {
                    waiting.Dispatcher.BeginInvoke(() =>
                    {
                        waiting.Visibility = Visibility.Visible;
                        waiting.SetLoadingText(message);
                    });
                }
            }
            catch(Exception e)
            {
                string str = e.Message.ToString();
            }
        }
        /// <summary>
        /// 显示等待信息
        /// </summary>
        public static void ShowWaiting()
        {
            try
            {
                if (waiting != null)
                {
                    waiting.Dispatcher.BeginInvoke(() =>
                    {
                        waiting.Visibility = Visibility.Visible;
                        waiting.SetLoadingText();
                    });
                }
            }
            catch (Exception e)
            {
                string str = e.Message.ToString();
            }
        }
        /// <summary>
        /// 隐藏等待信息
        /// </summary>
        public static void HideWaiting()
        {
            if (waiting != null)
                waiting.Dispatcher.BeginInvoke(() => waiting.Visibility = Visibility.Collapsed);
        }
    }
}

写好上面之后,还不能直接使用,现在使用的话,还不能显示等待信息,还要在程序集中加入一下代码(一般是index.xaml中)
xmlns:local="clr-namespace:HIEG2.Portal.Common;assembly=HIEG2.Portal.Common"

<Grid x:Name="loadingGrid">
        <local:Waiting x:Name="waiting" Visibility="Collapsed"/>
    </Grid>

设置上面之后,基本上已经可以了,下面就可以直接使用了,比如要加载一个数据,比较大,那么直接可以用,如下
Windows.ShowWaiting();
//写加载的代码,如果你使用异步加载,那么隐藏时要注意一下,要等待加载完数据之后再隐藏
Windows.HideWaiting();

自己能力有限,大家可以发挥自己的才智,可以把它做的更好

转载于:https://www.cnblogs.com/888h/archive/2010/08/17/1801692.html

Silverlight数据加载时,等待图标显示与隐藏(Loading)相关推荐

  1. 页面加载时让其显示笼罩层与加载等待图片

    页面加载时让其显示笼罩层与加载等待图片(结局比较完美,过程很坎坷,所以一定总结整理下,备用): 用了ajax异步,是因为js内容不能即时的显示出来,因为js是单线程,要把队列中的任务执行完后才会执行刚 ...

  2. 利用shell脚本结合hive语句进行数据加载时的优化

    把hdfs上的文件加载到hive分区表 version0.1:遍历目录下的所有文件,逐个文件加载,循环次数多,单个文件加载不利于发挥系统io性能 for file in `hadoop fs -ls ...

  3. Angular\Vue解决页面数据加载时出现{{message}}闪烁的情况

    vue 使用v-cloak <style type="text/css">[v-cloak] { display: none } </style> < ...

  4. 微信小程序标题栏非首页时home图标显示与隐藏(So easy!)

    在微信小程序中,有时我们需要在非首页的时候显示home图标,有时又需要隐藏home图标,这个时候我们应该如何去做呢?阅读完此文后希望对你有所帮助! 1. 显示home图标 2. 隐藏home图标 1. ...

  5. echarts 通过ajax实现动态数据加载

    首先先把官网上的demo拿过来,这时候的柱状图数据以及xy的数据都为空 样式如下 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transi ...

  6. bootstrap table 动态列数据加载(一)

    bootstrap table 动态列数据加载(一) 我想把所有的收费项目作为表头,不固定死收费项目,数据库中有啥就显示啥. 动态数据加载时,不能用bean的嵌套,源码中加载表头和数据是分开的,第几列 ...

  7. WPF Datagrid 大量数据加载问题

    需求:自定义Datagrid样式加载大量数据,至少5000条,加载速度的快慢统计? 第一步:自定义Datagrid样式 这个就不多说了,可以参照以下这篇博客,代码什么都有,根据自己想要的样式修改就行 ...

  8. 在PictureBox加载图片时,显示等待,加载完毕后再显示真正的图片

    void Button1Click(object sender, EventArgs e) { //图片异步加载完成后的处理事件 pictureBox1.LoadCompleted += new As ...

  9. android加载刷新进度条,android – 在Activity加载时显示进度条

    我有一个ListActivity,它基于列表选择启动另一个Activity.第二个Activity需要从互联网上加载一些相当数据的数据,因此在用户点击一个项目和Activity显示之间有一个明显的延迟 ...

最新文章

  1. c语言以空格分割字符串_C语言: 利用sscanf() 函数分割字符串
  2. AgileEAS.NET平台开发实例-药店系统-报表开发(上)
  3. 用php写京东抢购,关于抢京东券高并发的问题?
  4. 452 Minimum Number of Arrows to Burst Balloons
  5. 网络流 增广路 回退
  6. 日常小问题汇总(1)
  7. mybatis常用jdbcType数据类型
  8. 织梦重置mysql数据库密码忘记_织梦cms管理员密码忘记了怎么重置找回?
  9. sicp 2.3-2.5 习题
  10. Tablet UI模式: 中心舞台
  11. Spring MVC中@ModelAttribute注解的使用
  12. java项目报告书_Java项目报告模版.doc
  13. 微信服务通知消息找回_微信鲜为人知的4个冷知识,小技巧却有大用处
  14. 2021年第十二届蓝桥杯大赛软件赛决赛C/C++大学A组 个人部分题解
  15. 如何用Python给图片添加文字/图片水印的方法,特别简单好用,filestools和Pil模块
  16. 点阵字库(字模)生成器 4.0 TS4
  17. 视频 | 太壮观了!阿尔乌拉打破全球最大热气球发光表演纪录
  18. 机器自动翻译古文拼音 - 十大宋词 - 雨霖铃·寒蝉凄切 柳永
  19. 有什么毫不起眼却闷声发大财的行业或者生意?
  20. 人工智能:是“哆啦A梦”还是“终结者”

热门文章

  1. Linux操作系统下查看硬件信息的命令总结
  2. restful,RESTful API 设计,GET/PUT/DELETE/POST
  3. 【原】让H5页面适配移动设备全家 - 设计师篇 - PPT
  4. 将 Shiro 作为一个许可为基础的应用程序 五:password加密/解密Spring应用
  5. PCL、XPS转换成PDF的控件activePDF Meridian​
  6. DATAGRID学习
  7. opengl 粒子按轨迹运动_袁讲经典4:一个粒子在电场中的运动轨迹相关问题
  8. Echarts之悬浮框中的数据排序
  9. 通过js获取元素css3的transform rotate旋转角度方法
  10. SQL Server 跨域访问