<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      WPF datagrid mvvm loaded 100M items,prism.wpf,prism.dryioc

      Install-Package Prism.Wpf
      Install-Package Prism.DryIOC
      #region Interfaces
      public interface IIDService
      {
          int GetID();
      }
      
      public class IDService : IIDService
      {
          int idx = 0;
          public int GetID()
          {
              return Interlocked.Increment(ref idx);
          }
      }
      
      public interface INameService
      {
          string GetName();
      }
      
      public class NameService : INameService
      {
          int idx = 0;
          public string GetName()
          {
              return $"Name_{Interlocked.Increment(ref idx)}";
          }
      }
      
      public interface IISBNService
      {
          string GetISBN();
      }
      
      public class ISBNService : IISBNService
      {
          int idx = 0;
          public string GetISBN()
          {
              return $"ISBN_{Interlocked.Increment(ref idx)}";
          }
      }
      
      #endregion
      
      
      using System.Configuration;
      using System.Data;
      using System.Windows;
      
      namespace WpfApp39
      {
          /// <summary>
          /// Interaction logic for App.xaml
          /// </summary>
          public partial class App : PrismApplication
          {
              protected override Window CreateShell()
              {
                  return Container.Resolve<MainWindow>();
              }
      
              protected override void RegisterTypes(IContainerRegistry containerRegistry)
              {
                  containerRegistry.RegisterSingleton<IIDService, IDService>();
                  containerRegistry.RegisterSingleton<INameService, NameService>();
                  containerRegistry.RegisterSingleton<IISBNService,ISBNService>();
                  containerRegistry.RegisterSingleton<MainWindow>();
                  containerRegistry.RegisterSingleton<MainWindowViewModel>();
              }
          }
      
      }
       public async Task InitBooksCollectionAsync()
       {
           BooksCollection = new ObservableCollection<Book>();
           List<Book> booksList = new List<Book>();
           for (int i = 1; i < 100000001; i++)
           {
               booksList.Add(new Book()
               {
                   Id=idService.GetID(),
                   Name=nameService.GetName(),
                   ISBN=isbnService.GetISBN(),
                   Title=$"Title_{i}",
                   Topic=$"Topic_{i}"
               });
      
               if(i%1000000==0)
               {
                   await PopulateBooksCollectionAsync(booksList);
               }
           }
       }
      
       private async Task PopulateBooksCollectionAsync(List<Book> booksList)
       {
           await Application.Current.Dispatcher.InvokeAsync(() =>
           {
               var tempList = booksList.ToList();
               booksList.Clear();
               foreach (var bk in tempList)
               {
                   BooksCollection.Add(bk);
               }
               MainTitle = $"Loaded {BooksCollection.Count} items,{GetMemory()}";
           }, System.Windows.Threading.DispatcherPriority.Background);
       }
      
       private string GetMemory()
       {
           var mem = Process.GetCurrentProcess().PrivateMemorySize64 / 1024.0d / 1024.0d;
           return $"Memory:{mem.ToString("N2")} M";
       }

       

       

      //App
      <prism:PrismApplication x:Class="WpfApp39.App"
                   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                   xmlns:local="clr-namespace:WpfApp39"
                   xmlns:prism="http://prismlibrary.com/">    
      </prism:PrismApplication>
      using System.Configuration;
      using System.Data;
      using System.Windows;
      
      namespace WpfApp39
      {
          /// <summary>
          /// Interaction logic for App.xaml
          /// </summary>
          public partial class App : PrismApplication
          {
              protected override Window CreateShell()
              {
                  return Container.Resolve<MainWindow>();
              }
      
              protected override void RegisterTypes(IContainerRegistry containerRegistry)
              {
                  containerRegistry.RegisterSingleton<IIDService, IDService>();
                  containerRegistry.RegisterSingleton<INameService, NameService>();
                  containerRegistry.RegisterSingleton<IISBNService,ISBNService>();
                  containerRegistry.RegisterSingleton<MainWindow>();
                  containerRegistry.RegisterSingleton<MainWindowViewModel>();
              }
          }
      
      }
      
      
      <Window x:Class="WpfApp39.MainWindow"
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:local="clr-namespace:WpfApp39"
              xmlns:prism="http://prismlibrary.com/"
              mc:Ignorable="d"
              Title="{Binding MainTitle}" Height="450" Width="800"
              WindowState="Maximized"
              prism:ViewModelLocator.AutoWireViewModel="True">
          <Grid>
              <DataGrid ItemsSource="{Binding BooksCollection,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
                        VirtualizingPanel.IsVirtualizing="True"
                        VirtualizingPanel.VirtualizationMode="Recycling"
                        VirtualizingPanel.CacheLength="2,2"
                        VirtualizingPanel.CacheLengthUnit="Item"
                        ScrollViewer.IsDeferredScrollingEnabled="True"
                        ScrollViewer.CanContentScroll="True"
                        AutoGenerateColumns="False"
                        CanUserAddRows="False">
                  <DataGrid.Columns>
                      <DataGridTemplateColumn>
                          <DataGridTemplateColumn.CellTemplate>
                              <DataTemplate>
                                  <Grid Width="{Binding DataContext.GridWidth,RelativeSource={RelativeSource AncestorType=Window}}"
                                        Height="{Binding DataContext.GridHeight,RelativeSource={RelativeSource AncestorType=Window}}"
                                        >
                                      <Grid.Resources>
                                          <Style TargetType="TextBlock">
                                              <Setter Property="FontSize" Value="30"/>
                                              <Setter Property="HorizontalAlignment" Value="Center"/>
                                              <Setter Property="VerticalAlignment" Value="Center"/>
                                              <Style.Triggers>
                                                  <Trigger Property="IsMouseOver" Value="True">
                                                      <Setter Property="FontSize" Value="50"/>
                                                      <Setter Property="Foreground" Value="Red"/>
                                                  </Trigger>
                                              </Style.Triggers>
                                          </Style>
                                      </Grid.Resources>
                                      <Grid.RowDefinitions>
                                          <RowDefinition/>
                                          <RowDefinition/>
                                      </Grid.RowDefinitions>
                                      <Grid.ColumnDefinitions>
                                          <ColumnDefinition/>
                                          <ColumnDefinition/>
                                          <ColumnDefinition/>
                                          <ColumnDefinition/>
                                      </Grid.ColumnDefinitions>
                                      <TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding Id}"/>
                                      <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Name}"/>
                                      <TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding Title}"/>
                                      <TextBlock Grid.Row="0" Grid.Column="3" Text="{Binding Topic}"/>
                                      <TextBlock Grid.Row="1" Grid.Column="0"  Grid.ColumnSpan="4"
                                                 Text="{Binding ISBN}"/>
                                  </Grid>
                              </DataTemplate>
                          </DataGridTemplateColumn.CellTemplate>
                      </DataGridTemplateColumn>
                  </DataGrid.Columns>
              </DataGrid>
          </Grid>
      </Window>
      
      
      using System.Collections.ObjectModel;
      using System.Diagnostics;
      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.Navigation;
      using System.Windows.Shapes;
      
      namespace WpfApp39
      {
          /// <summary>
          /// Interaction logic for MainWindow.xaml
          /// </summary>
          public partial class MainWindow : Window
          {
              public MainWindow()
              {
                  InitializeComponent();
                  this.Loaded += async (s, e) =>
                  {
                      var vm = this.DataContext as MainWindowViewModel;
                      if(vm!=null)
                      {
                          vm.GridWidth = this.ActualWidth;
                          vm.GridHeight = this.ActualHeight / 2;
                          await vm.InitBooksCollectionAsync();
                      }
                  };
              }
          }
      
          public class MainWindowViewModel : BindableBase
          {
              private IIDService idService;
              private INameService nameService;
              private IISBNService isbnService;
              public MainWindowViewModel(IIDService idServiceValue, INameService nameServiceValue,
                  IISBNService isbnServiceValue)
              {
                  idService = idServiceValue;
                  nameService = nameServiceValue;
                  isbnService = isbnServiceValue;
              }
      
              public async Task InitBooksCollectionAsync()
              {
                  BooksCollection = new ObservableCollection<Book>();
                  List<Book> booksList = new List<Book>();
                  for (int i = 1; i < 100000001; i++)
                  {
                      booksList.Add(new Book()
                      {
                          Id=idService.GetID(),
                          Name=nameService.GetName(),
                          ISBN=isbnService.GetISBN(),
                          Title=$"Title_{i}",
                          Topic=$"Topic_{i}"
                      });
      
                      if(i%1000000==0)
                      {
                          await PopulateBooksCollectionAsync(booksList);
                      }
                  }
              }
      
              private async Task PopulateBooksCollectionAsync(List<Book> booksList)
              {
                  await Application.Current.Dispatcher.InvokeAsync(() =>
                  {
                      var tempList = booksList.ToList();
                      booksList.Clear();
                      foreach (var bk in tempList)
                      {
                          BooksCollection.Add(bk);
                      }
                      MainTitle = $"Loaded {BooksCollection.Count} items,{GetMemory()}";
                  }, System.Windows.Threading.DispatcherPriority.Background);
              }
      
              private string GetMemory()
              {
                  var mem = Process.GetCurrentProcess().PrivateMemorySize64 / 1024.0d / 1024.0d;
                  return $"Memory:{mem.ToString("N2")} M";
              }
      
              private string mainTitle;
              public string MainTitle
              {
                  get
                  {
                      return mainTitle; 
                  }
                  set
                  {
                      SetProperty(ref  mainTitle, value);
                  }
              }
      
              private double gridWidth;
              public double GridWidth
              {
                  get
                  {
                      return gridWidth;
                  }
                  set
                  {
                      SetProperty(ref gridWidth, value);
                  }
              }
      
              private double gridHeight;
              public double GridHeight
              {
                  get
                  {
                      return gridHeight;
                  }
                  set
                  {
                      SetProperty(ref gridHeight, value);
                  }
              }
      
              private ObservableCollection<Book> booksCollection;
              public ObservableCollection<Book> BooksCollection
              {
                  get
                  {
                      return booksCollection;
                  }
                  set
                  {
                      SetProperty(ref booksCollection, value);
                  }
              }
          }
      
          public class Book
          {
              public int Id { get; set; }
              public string Name { get; set; }
              public string ISBN { get; set; }
              public string Title { get; set; }
              public string Topic { get; set; }
          }
      
      
          #region Interfaces
          public interface IIDService
          {
              int GetID();
          }
      
          public class IDService : IIDService
          {
              int idx = 0;
              public int GetID()
              {
                  return Interlocked.Increment(ref idx);
              }
          }
      
          public interface INameService
          {
              string GetName();
          }
      
          public class NameService : INameService
          {
              int idx = 0;
              public string GetName()
              {
                  return $"Name_{Interlocked.Increment(ref idx)}";
              }
          }
      
          public interface IISBNService
          {
              string GetISBN();
          }
      
          public class ISBNService : IISBNService
          {
              int idx = 0;
              public string GetISBN()
              {
                  return $"ISBN_{Interlocked.Increment(ref idx)}";
              }
          }
      
          #endregion
      }

       

       

       

      image

       

       

       

       

      image

       

       

       

      image

       

       

       

      image

       

      posted @ 2025-10-27 22:18  FredGrit  閱讀(4)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 成人性生交大片免费看中文| 激情综合网五月激情五月| 男女扒开双腿猛进入爽爽免费看| 国产色婷婷精品综合在线| 国产高颜值不卡一区二区 | 色综合 图片区 小说区| 视频免费完整版在线播放| 亚洲精品国产自在久久| 日本九州不卡久久精品一区| 国产中文字幕精品在线| 忘忧草日本在线播放www| 国产精品不卡一区二区在线| 日本一区二区三深夜不卡| 国产中文字幕在线一区| 你懂的在线视频一区二区| 亚洲avav天堂av在线网爱情| 日韩精品av一区二区三区| 国产欧美日韩亚洲一区二区三区| 国产成人亚洲欧美二区综合| 亚洲综合91社区精品福利| 精品一区二区久久久久久久网站| 色综合一本到久久亚洲91| 国产极品美女高潮无套| 黑人玩弄人妻中文在线| 亚洲综合一区二区国产精品| jizz国产免费观看| 99热精品国产三级在线观看| 视频一区视频二区在线视频| 人与禽交av在线播放| 97国产成人无码精品久久久| 偷拍美女厕所尿尿嘘嘘小便| 久久久无码精品亚洲日韩蜜臀浪潮| 欧美激情 亚洲 在线| 久久亚洲精品中文字幕馆| 精品人妻伦一二三区久久aaa片| 麻豆成人传媒一区二区| 工布江达县| 日韩一区二区三区理伦片| 亚洲AVAV天堂AV在线网阿V| 刚察县| 国产精品一区二区三区四区|