zoukankan      html  css  js  c++  java
  • ObservableCollection

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    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.Navigation;
    using System.Windows.Shapes;
    using System.Collections.ObjectModel;
    using System.Globalization;
    
    namespace imgLoadApp
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            ObservableCollection<Uri> images = null;
    
            // 用于线程间同步的对象
            object lockobj = new object();
    
            public MainWindow()
            {
                InitializeComponent();
                images = new ObservableCollection<Uri>();
                Binding b = new Binding
                {
                    Source = images,
                    IsAsync = true
                };
                lbImages.SetBinding(ItemsControl.ItemsSourceProperty, b);
    
                // 这一句很关键,开启集合的异步访问支持
                BindingOperations.EnableCollectionSynchronization(images, lockobj);
    
                // 异步加载数据
                Task.Run(() =>
                {
                    // 代码写在 lock 块中
                    lock (lockobj)
                    {
                        for (int i = 0; i < 20000; i++)
                        {
                            Uri u = new Uri("0.jpg", UriKind.Relative);
                            images.Add(u);
                        }
                    }
                });
            }
        }
    
        public sealed class UriToBitmapConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                Uri uri = (Uri)value;
                BitmapImage bmp = new BitmapImage();
                bmp.DecodePixelHeight = 250; // 确定解码高度,宽度不同时设置
                bmp.BeginInit();
                // 延迟,必要时创建
                bmp.CreateOptions = BitmapCreateOptions.DelayCreation;
                bmp.CacheOption = BitmapCacheOption.OnLoad;
                bmp.UriSource = uri;
                bmp.EndInit(); //结束初始化
                return bmp;
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
            {
                return null;
            }
        }
    }
    

      

  • 相关阅读:
    不错的电影(先收藏着)
    getchar() getch() getche() gets() puts() scanf()的用法及区别
    java反射获取字段的属性值,以及为字段赋值等方法
    oracle将查询结果横转纵
    关于MySQL 的LEFT JOIN ON的问题
    MySQL表名和数据库关键字相同解决办法
    ajax 后台正常执行 错误类型却是404
    BIT 树状数组 详解 及 例题
    HDU 2689 Sort it (树状数组)
    HDU Cow Sorting (树状数组)
  • 原文地址:https://www.cnblogs.com/Jeely/p/11003693.html
Copyright © 2011-2022 走看看