wpf中实现数据的逐条加载显示效果

实现的效果是往集合类里面添加一条数据,控件上就显示一条数据;

xaml ================================

<Window x:Class="ThreadedWpfExplorer.Window2"

       Loaded="Window_Loaded"

       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

       Title="Window2" Height="300" Width="300">

   <Window.Resources>

       <DataTemplate x:Key="listBoxTemplate">

           <TextBlock Text ="{Binding Name}" 

                      Padding="2" FontFamily="宋体" FontWeight="Normal" FontSize="12px" />

       </DataTemplate>

   </Window.Resources>

   <Grid>

       <ListBox Name="lst" Margin="0,68,0,0" ItemTemplate="{StaticResource listBoxTemplate}">

 

      </ListBox>

       <Button Content="Button" Height="27" HorizontalAlignment="Left" Margin="12,12,0,0" Name="button1" VerticalAlignment="Top" Width="78" Click="button1_Click" />

   </Grid>

</Window>

 

cs ===================================

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Shapes;

 

namespace ThreadedWpfExplorer

{

   /// <summary>

   /// Window2.xaml 的交互逻辑

   /// </summary>

   public partial class Window2 : Window

   {

       public Window2()

       {

           InitializeComponent();

       }

 

      private void Window_Loaded(object sender, RoutedEventArgs e)

       {

 

      }

 

      private void button1_Click(object sender, RoutedEventArgs e)

       {

           List<Employee> _employees = new List<Employee>();

           for (int i = 0; i < 100; i++)

           {

               Employee temp = new Employee();

               temp.name = "aaa" + i.ToString();

               _employees.Add(temp);

           }

           lst.ItemsSource = _employees;

       }

   }

 



  public class Employee

   {

       public string name=string.Empty ;

 

      public string Name

       {

           get { return name; }

           set { name=value ;}

       }

   }

}










//-----------------------------------------------------------------------


ThreadPool.QueueUserWorkItem(delegate

           {

               for (int i = 0; i <= 100 && Application.Current != null; i++)

               {

                   Application.Current.Dispatcher.BeginInvoke((Action)delegate

                   {

 

                      Employee temp = new Employee();

                       temp.name = "aaa" + i.ToString();

                       _employees.Add(temp);

                       lst.SelectedItem = temp;

                       lst.ScrollIntoView(temp);

                   });

                   Thread.Sleep(100);

               }

 

          });


 

用多线程处理能实现想要的效果;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值