zoukankan      html  css  js  c++  java
  • 异步方式向WPF ListBox控件中一条一条添加记录

    向ListBox绑定数据源时,如果数据量过大,可能会使得程序卡死,这是就需要一条一条的向ListBox的数据源中添加记录了,下面是个小Demo:

    1.前台代码,就是一个ListBox控件

    <Window x:Class="WpfApplication1.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <ListBox x:Name="listBox"></ListBox>
        </Grid>
    </Window>
    

    2.后台代码,就是不断的向ListBox的绑定的数据源中添加记录,这里只是添加了一个描述数字,不断的调用委托添加数据,如果想停止添加数据时可以写停止条件。

    using System.Collections.ObjectModel;
    using System.Windows;
    using System.Windows.Threading;
    
    namespace WpfApplication1
    {
        /// <summary>
        ///     MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            private ObservableCollection<string> _numberDescriptions;
    
            public MainWindow()
            {
                InitializeComponent();
                Loaded += MainWindow_Loaded;
            }
    
            private void MainWindow_Loaded(object sender, RoutedEventArgs e)
            {
                _numberDescriptions = new ObservableCollection<string>();
    
                listBox.ItemsSource = _numberDescriptions;
    
                Dispatcher.BeginInvoke(DispatcherPriority.Background, new LoadNumberDelegate(LoadNumber), 1);
            }
    
            private void LoadNumber(int number)
            {
                _numberDescriptions.Add("Number " + number);
                Dispatcher.BeginInvoke(DispatcherPriority.Background, new LoadNumberDelegate(LoadNumber), ++number);
            }
    
            private delegate void LoadNumberDelegate(int number);
        }
    }
    

    3.效果图

  • 相关阅读:
    八皇后-递归
    代码复用3
    权限管理系统-角色组模块
    MzBlog分析
    linux shell 终端中文乱码(转)
    LINUX下中文语言包的安装(转)
    每一个程序员必须知道的业内英语词汇(转)
    80后创业故事之:兄弟散伙,创业失败(转)
    尊重用户的习惯审美,不要挑战用户的习惯(转)
    libpcre.so.1 cannot be found
  • 原文地址:https://www.cnblogs.com/candyzkn/p/3494595.html
Copyright © 2011-2022 走看看