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

来源:互联网 发布:罗技m100r 知乎 编辑:程序博客网 时间:2024/06/01 09:18

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

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);               }           });


 

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

原创粉丝点击