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

本文共 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

你可能感兴趣的文章
C#中对话框的使用(比较全)
查看>>
5月11日 python学习总结 子查询、pymysql模块增删改查、防止sql注入问题
查看>>
sqlserver查找使用了某个字段的所有存储过程
查看>>
TCP/IP协议族(三) 数字签名与HTTPS详解
查看>>
bitset里面一些函数的用法
查看>>
《我曾》火了:人这辈子,最怕突然听懂这首歌
查看>>
使用gdb进行debug
查看>>
C#基础知识总结(四)
查看>>
oracle 分页
查看>>
正则表达式语法大全
查看>>
《蹭课神器》项目总结
查看>>
HNOI2017
查看>>
winsock 收发广播包 【转】
查看>>
2018-2019-1 20165209 《信息安全系统设计基础》第1周学习总结
查看>>
android View Hierarchry for UI
查看>>
交叉排序
查看>>
关于读取mapper的两种方式
查看>>
WebRTC 中RTT实现方法
查看>>
CentOS7使用yum安装ceph rpm包
查看>>
About_AJAX
查看>>