博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
特效:ListBox数据加载特效
阅读量:5270 次
发布时间:2019-06-14

本文共 1688 字,大约阅读时间需要 5 分钟。

应用程序在加载数据的时候,总是死死的瞬间显示,会不会觉得乏味呢?  一般显示列表数据使用的ListBox控件 , 这里我写了一个ListBox的数据加载效果,请大家围观 (顺便扯蛋一句,Silverlight的中实现此效果方法类似),  好了废话不多说, 上代码 !!!

逐个加载数据代码:

  1.         private int i = 0;
  2.         private List<Users> list = new List<Users>();
  3.         private DispatcherTimer dt = new DispatcherTimer() { Interval = new TimeSpan(0, 0, 0, 0, 100) };
  4.         private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
  5.         {
  6.             /*加载xml内容*/
  7.             XDocument x = XDocument.Parse(Tools.WriteOrReadToFile("xml/Config.xml", null, Enums.FileType.读));
  8.             foreach (XElement temp in x.Element("root").Element("users").Elements())
  9.             {
  10.                 Users user = new Users() { Address = temp.Attribute("Address").Value, Age = temp.Attribute("Age").Value, EnglishName = temp.Attribute("EnglishName").Value, Name = temp.Attribute("Name").Value };
  11.                 list.Add(user);
  12.             }
  13. /*这里必须新开一个线程去执行加载,不然ListBox还是会同时显示数据项*/
  14. /*DispatcherTimer也是一个线程*/
  15.             dt.Tick += new EventHandler(dt_Tick);          
  16.             dt.Start();
  17.         }
  18.         void dt_Tick(object sender, EventArgs e)
  19.         {
  20.             if (i < list.Count)
  21.             {
  22.                 listBox1.Items.Add(list[i]);         //添加数据
  23.                 i++;
  24.             }
  25.             else
  26.             {
  27.                 i = 0;
  28.                 dt.Stop();
  29.             }
  30.         }
复制代码

接着编辑ListBox的ItemContainerStyle模版,创建一个状态组,再创建一个状态,打开故事板,在0秒的时候把ContentContainer的透明度设置成"0",    0.5秒的时候设置成1,这就是传说中的淡出效果,再给ContentContainer添加一个GoToStateAction触发器,在Load事件里调用自己定义的状态, F5 ,搞定!

  1. <VisualStateGroup x:Name="VisualStateGroup">
  2.           <VisualState x:Name="VisualState">
  3.                      <Storyboard>
  4.                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="ContentContainer">
  5.                                           <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
  6.                                            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1"/>
  7.                                   </DoubleAnimationUsingKeyFrames>
  8.                        </Storyboard>
  9.               </VisualState>
  10.   </VisualStateGroup>
复制代码

转载于:https://www.cnblogs.com/SphinX/archive/2012/08/03/2621044.html

你可能感兴趣的文章
标题编辑 AndroidTagGroup
查看>>
Intent之Action
查看>>
函数参数个数不确定时使用va_start
查看>>
QT基本操作
查看>>
课后作业-阅读任务-阅读笔记-3
查看>>
喜欢种种“开放平台”
查看>>
6.00.1x Introduction to computation
查看>>
阅读《名师讲坛--Android开发实战经典》
查看>>
php rsa加密解密实例
查看>>
【转】用perl写的单位电脑信息采集程序
查看>>
mysql install
查看>>
typescript - 9.装饰器
查看>>
西北大学2019春季校赛填坑笔记
查看>>
每天干的啥?(2018.03)
查看>>
Objective - C基础: 第六天 - 1.ARC自动引用计数的基本认识
查看>>
python中os和sys模块的详解
查看>>
C# struct class 在Marshal.SizeOf 的区别
查看>>
python初步(附学习思维导图)
查看>>
sql 中实现取得汉字首写字母
查看>>
git push解决办法: ! [remote rejected] master -> master (pre-receive hook declined)
查看>>