public void TestSmoke() { int changeCount = 0; ObservableCollectionWatcher <Sample> watcher = new ObservableCollectionWatcher <Sample>(() => changeCount++); ObservableCollection <Sample> collection = new ObservableCollection <Sample>(); watcher.SetCollection(collection); Assert.That(changeCount, Is.EqualTo(0)); Sample sample1 = new Sample(); collection.Add(sample1); Assert.That(changeCount, Is.EqualTo(0)); Sample sample2 = new Sample(); collection.Add(sample2); Assert.That(changeCount, Is.EqualTo(0)); sample1.FirePropertyChanged(); Assert.That(changeCount, Is.EqualTo(1)); sample2.FirePropertyChanged(); Assert.That(changeCount, Is.EqualTo(2)); collection.Remove(sample1); sample1.FirePropertyChanged(); Assert.That(changeCount, Is.EqualTo(2)); Sample sample3 = new Sample(); collection[0] = sample3; Assert.That(changeCount, Is.EqualTo(2)); sample1.FirePropertyChanged(); sample2.FirePropertyChanged(); Assert.That(changeCount, Is.EqualTo(2)); sample3.FirePropertyChanged(); Assert.That(changeCount, Is.EqualTo(3)); watcher.SetCollection(null); Assert.That(changeCount, Is.EqualTo(3)); }
public DockerContainerListView() { XamlReader.Load(this); //todo: workaround for bug in Eto.Forms (probably related to https://github.com/picoe/Eto/issues/515) containersCollectionWatcher = new ObservableCollectionWatcher <DockerContainerViewModel>(ContainersGridView.Invalidate); DataContextChanged += (sender, args) => { DockerContainerListViewModel viewModel = DataContext as DockerContainerListViewModel; containersCollectionWatcher.SetCollection(viewModel?.Containers); }; IdCell.Binding = Binding.Property <DockerContainerViewModel, string>(c => c.Id); ImageCell.Binding = Binding.Property <DockerContainerViewModel, string>(c => c.Image); ImageIdCell.Binding = Binding.Property <DockerContainerViewModel, string>(c => c.ImageId); CreatedCell.Binding = Binding.Property <DockerContainerViewModel, string>(c => c.Created); StateCell.Binding = Binding.Property <DockerContainerViewModel, string>(c => c.State); ContainersGridView.SelectionChanged += ContainersGridViewOnSelectionChanged; }
public DockerImageListView() { XamlReader.Load(this); //todo: workaround for bug in Eto.Forms (probably related to https://github.com/picoe/Eto/issues/515) containersCollectionWatcher = new ObservableCollectionWatcher <DockerImageViewModel>(ImagesGridView.Invalidate); DataContextChanged += (sender, args) => { DockerImageListViewModel viewModel = DataContext as DockerImageListViewModel; containersCollectionWatcher.SetCollection(viewModel?.Images); }; IdCell.Binding = Binding.Property <DockerImageViewModel, string>(c => c.Id); RepoTagsCell.Binding = Binding.Property <DockerImageViewModel, string>(c => c.RepoTagsAsText); RepoDigestsCell.Binding = Binding.Property <DockerImageViewModel, string>(c => c.RepoDigestsAsText); CreatedCell.Binding = Binding.Property <DockerImageViewModel, string>(c => c.CreatedAsText); SizeCell.Binding = Binding.Property <DockerImageViewModel, string>(c => c.SizeAsText); VirtualSizeCell.Binding = Binding.Property <DockerImageViewModel, string>(c => c.VirtualSizeAsText); ImagesGridView.SelectionChanged += ImagesGridViewOnSelectionChanged; }
public AccountImportQueueRecordsEditViewModel() { encodings = new ObservableCollection<Encoding>(new[] { Encoding.UTF8, Encoding.ASCII, Encoding.GetEncoding(1252), Encoding.Unicode }); Encodings = CollectionViewSource.GetDefaultView(encodings); Encodings.SortDescriptions.Add(new SortDescription(nameof(Encoding.WebName), ListSortDirection.Ascending)); SelectedEncoding = encodings.FirstOrDefault(); loadTypes = new ObservableCollection<LoadType>(new[] { new LoadType("Для анализа", true), new LoadType("Обычная загрузка", false) }); LoadTypes = CollectionViewSource.GetDefaultView(loadTypes); SelectedLoadType = loadTypes.FirstOrDefault(); localCollection = new ObservableCollectionWatcher<ImportQueueRecord>((x, y) => x.Id == y.Id); ImportQueueRecords = CollectionViewSource.GetDefaultView(localCollection); //ImportQueueRecords.CollectionChanged += ImportQueueRecords_CollectionChanged; ImportQueueRecords.SortDescriptions.Add(new SortDescription(nameof(ImportQueueRecord.CreatedDate), ListSortDirection.Descending)); setFilterTimer = new FilterTimer<DateTimeFilter>(TimeSpan.FromMilliseconds(500), (filter) => { RunUnderDispatcher(() => { if (this.AccountsImportQueueRecordsComponent != null) { localCollection.Clear(); AccountsImportQueueRecordsComponent.From = filter.From; AccountsImportQueueRecordsComponent.To = filter.To; } }); }); InsertCommand = new DelegateCommand((o) => InsertNew()); DeleteCommand = new DelegateCommand((o) => DeleteFromCollection(o as ImportQueueRecord)); }
public AccountAdditionalColumnsEditViewModel() { localCollection = new ObservableCollectionWatcher<AccountDataRecordAdditionalColumn>((x, y) => x.Id == y.Id); AccountAdditionalColumns = CollectionViewSource.GetDefaultView(localCollection); AccountAdditionalColumns.CollectionChanged += AccountAdditionalColumns_CollectionChanged; RowEditEndingCommand = new DelegateCommand(o => RowEditEnding(o as System.Windows.Controls.DataGridRowEditEndingEventArgs)); }
public AccountPhoneMarksEditViewModel() { localCollection = new ObservableCollectionWatcher<AccountPhoneMark>((x, y) => x.Id == y.Id); AccountPhoneMarks = CollectionViewSource.GetDefaultView(localCollection); AccountPhoneMarks.CollectionChanged += AccountPhoneMarks_CollectionChanged; RowEditEndingCommand = new DelegateCommand(o => RowEditEnding(o as System.Windows.Controls.DataGridRowEditEndingEventArgs)); setFilterTimer = new FilterTimer<string>(TimeSpan.FromMilliseconds(200), (filter) => { RunUnderDispatcher(() => { if (this.AccountsPhoneMarksComponent != null) { localCollection.Clear(); AccountsPhoneMarksComponent.Filter = filter; } }); }); }