Silverlight数据加载时,等待图标显示与隐藏(Loading)
在我们开发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)相关推荐
- 页面加载时让其显示笼罩层与加载等待图片
页面加载时让其显示笼罩层与加载等待图片(结局比较完美,过程很坎坷,所以一定总结整理下,备用): 用了ajax异步,是因为js内容不能即时的显示出来,因为js是单线程,要把队列中的任务执行完后才会执行刚 ...
- 利用shell脚本结合hive语句进行数据加载时的优化
把hdfs上的文件加载到hive分区表 version0.1:遍历目录下的所有文件,逐个文件加载,循环次数多,单个文件加载不利于发挥系统io性能 for file in `hadoop fs -ls ...
- Angular\Vue解决页面数据加载时出现{{message}}闪烁的情况
vue 使用v-cloak <style type="text/css">[v-cloak] { display: none } </style> < ...
- 微信小程序标题栏非首页时home图标显示与隐藏(So easy!)
在微信小程序中,有时我们需要在非首页的时候显示home图标,有时又需要隐藏home图标,这个时候我们应该如何去做呢?阅读完此文后希望对你有所帮助! 1. 显示home图标 2. 隐藏home图标 1. ...
- echarts 通过ajax实现动态数据加载
首先先把官网上的demo拿过来,这时候的柱状图数据以及xy的数据都为空 样式如下 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transi ...
- bootstrap table 动态列数据加载(一)
bootstrap table 动态列数据加载(一) 我想把所有的收费项目作为表头,不固定死收费项目,数据库中有啥就显示啥. 动态数据加载时,不能用bean的嵌套,源码中加载表头和数据是分开的,第几列 ...
- WPF Datagrid 大量数据加载问题
需求:自定义Datagrid样式加载大量数据,至少5000条,加载速度的快慢统计? 第一步:自定义Datagrid样式 这个就不多说了,可以参照以下这篇博客,代码什么都有,根据自己想要的样式修改就行 ...
- 在PictureBox加载图片时,显示等待,加载完毕后再显示真正的图片
void Button1Click(object sender, EventArgs e) { //图片异步加载完成后的处理事件 pictureBox1.LoadCompleted += new As ...
- android加载刷新进度条,android – 在Activity加载时显示进度条
我有一个ListActivity,它基于列表选择启动另一个Activity.第二个Activity需要从互联网上加载一些相当数据的数据,因此在用户点击一个项目和Activity显示之间有一个明显的延迟 ...
最新文章
- c语言以空格分割字符串_C语言: 利用sscanf() 函数分割字符串
- AgileEAS.NET平台开发实例-药店系统-报表开发(上)
- 用php写京东抢购,关于抢京东券高并发的问题?
- 452 Minimum Number of Arrows to Burst Balloons
- 网络流 增广路 回退
- 日常小问题汇总(1)
- mybatis常用jdbcType数据类型
- 织梦重置mysql数据库密码忘记_织梦cms管理员密码忘记了怎么重置找回?
- sicp 2.3-2.5 习题
- Tablet UI模式: 中心舞台
- Spring MVC中@ModelAttribute注解的使用
- java项目报告书_Java项目报告模版.doc
- 微信服务通知消息找回_微信鲜为人知的4个冷知识,小技巧却有大用处
- 2021年第十二届蓝桥杯大赛软件赛决赛C/C++大学A组 个人部分题解
- 如何用Python给图片添加文字/图片水印的方法,特别简单好用,filestools和Pil模块
- 点阵字库(字模)生成器 4.0 TS4
- 视频 | 太壮观了!阿尔乌拉打破全球最大热气球发光表演纪录
- 机器自动翻译古文拼音 - 十大宋词 - 雨霖铃·寒蝉凄切 柳永
- 有什么毫不起眼却闷声发大财的行业或者生意?
- 人工智能:是“哆啦A梦”还是“终结者”
热门文章
- Linux操作系统下查看硬件信息的命令总结
- restful,RESTful API 设计,GET/PUT/DELETE/POST
- 【原】让H5页面适配移动设备全家 - 设计师篇 - PPT
- 将 Shiro 作为一个许可为基础的应用程序 五:password加密/解密Spring应用
- PCL、XPS转换成PDF的控件activePDF Meridian​
- DATAGRID学习
- opengl 粒子按轨迹运动_袁讲经典4:一个粒子在电场中的运动轨迹相关问题
- Echarts之悬浮框中的数据排序
- 通过js获取元素css3的transform rotate旋转角度方法
- SQL Server 跨域访问