using System.Collections.ObjectModel; using System.Windows; using System.Windows.Media; using TestDataGrid.Presentation; namespace TestDataGrid; public class MainWindowViewModel : ViewModelBase { public DelegateCommand ButtonCommand { get; set; } public ObservableCollection DataGridItemsSource { get; set { field = value; RaisePropertyChanged(); } } = []; public string IsExpandedDataGridCheckBoxContent { get; set { field = value; RaisePropertyChanged(); } } public bool IsExpandedDataGridCheckBoxIsChecked { get; set { if (field == value) return; IsExpandedDataGridCheckBoxContent = field ? "Развернуть всё" : "Свернуть всё"; field = value; RaisePropertyChanged(); } } public SolidColorBrush ColorTopHeader { get; set { field = value; RaisePropertyChanged(); } } = new(Colors.BurlyWood); public SolidColorBrush ColorTextTopHeader { get; set { field = value; RaisePropertyChanged(); } } = new(Colors.Black); public SolidColorBrush ColorBottomHeader { get; set { field = value; RaisePropertyChanged(); } } = new(Colors.Aqua); public SolidColorBrush ColorTextBottomHeader { get; set { field = value; RaisePropertyChanged(); } } = new(Colors.Blue); public bool DataGridCheckBoxColumnIsChecked { get; set { field = value; foreach (var item in DataGridItemsSource) item.Select = field; RaisePropertyChanged(); } } public string CountRowTextBoxText { get; set { field = value; RaisePropertyChanged(); } } internal MainWindowViewModel() { ButtonCommand = new DelegateCommand(ButtonCommandExecute); CountRowTextBoxText = "1000"; IsExpandedDataGridCheckBoxIsChecked = true; } private async void ButtonCommandExecute(object param) { switch (param.ToString()) { case "Generate": { var status = int.TryParse(CountRowTextBoxText, out var countRows); if (!status) { MessageBox.Show("Corrupted number!", "Error!", MessageBoxButton.OK, MessageBoxImage.Error); return; } var orderNumbers = new List(); var items = new List(); var ordinal = 0; for (var i = 0; i < countRows; i++) { while (true) { var random = new Random(); var orderNumber = random.Next(1, 10000); if (orderNumbers.Contains(orderNumber)) continue; orderNumbers.Add(orderNumber); break; } for (var j = 0; j < 5; j++) { var item = new DataGridItemViewModel() { Select = false, Ordinal = ++ordinal, OrdinalView = ordinal.ToString(), UserId = "007", UserName = "James Bond", OrderDataView = $"Order - {orderNumbers[i].ToString()}/{DateTime.Now.Year.ToString()}| {DateTime.Now.Date:MM-dd-yyyy} | Customer \"Peaky Blinders\" | Owner \"Jay & Silent Bob\"", ManufacturerLogo = null, Owner = "Jay & Silent Bob", OwnerIsChecked = true, CityOwner = "New york", NumOfRecord ="905486t9045", Certificate = "123/983-JQPS/TW176", StateRegister = "654634-17", Modification = "1YANKLS", FactoryId = "OJKLN4950", YearProduction = "2022", YearProductionIsChecked = true, DateVerifi = DateTime.Now.AddYears(-2).ToString("MM-dd-yyyy"), ValidUntil = DateTime.Now.AddYears(2).ToString("MM-dd-yyyy"), VerificationInterval = "4 years", Category = "Rumpelstiltskin", TypeVerifiView = "Periodical", WorkStatus = 5, WorkStatusView = "Succeed", StatusCheckBoxIsChecked = true, StatusCheckBoxContent = "All Ok", Comment = "All operations have been completed successfully" }; items.Add(item); } } //DataGridItemsSource.Clear(); //await foreach (var item in items.ToAsyncEnumerable()) DataGridItemsSource.Add(item); var window = (MainWindow)Application.Current.MainWindow; window.RefreshFromTopAndRestorePosition(() => { DataGridItemsSource.Clear(); foreach (var item in items) { DataGridItemsSource.Add(item); } }); break; } } } }