Beispiel #1
0
        protected DataItemCollection(DataItemComparer comparer)
        {
            if (comparer == null)
            {
                throw new ArgumentNullException(nameof(comparer));
            }

            _comparer = comparer;
        }
        public int Compare(RepositoryFolderReader x, RepositoryFolderReader y)
        {
            int result = PrimaryComparer.Compare(x.CurrentItem.DateTime, y.CurrentItem.DateTime);

            if (0 == result && null != DataItemComparer)
            {
                result = DataItemComparer.Compare(x.CurrentItem, y.CurrentItem);
            }
            return(result);
        }
        public void LocalDataSourceProvider_SortDescriptions_NoGrouping_Ascending()
        {
            var data = Enumerable.Range(0, 10000).Select((i) => new DataItem {
                ID = i, Name = "Name" + i % 500, Surname = "Surname" + (5000 - i) % 1000
            }).ToList();

            LocalDataSourceProvider provider = new LocalDataSourceProvider();

            using (provider.DeferRefresh())
            {
                provider.GroupFactory = new DataGroupFactory();
                provider.SortDescriptions.Add(new PropertySortDescription()
                {
                    PropertyName = "Name", SortOrder = SortOrder.Descending
                });
                provider.SortDescriptions.Add(new PropertySortDescription()
                {
                    PropertyName = "ID", SortOrder = SortOrder.Descending
                });
                provider.ItemsSource = data;
            }
            provider.BlockUntilRefreshCompletes();

            DataItemComparer comparer = new DataItemComparer(new DataItemNameComparer()
            {
                Descending = true
            }, new DataItemIDComparer()
            {
                Descending = true
            });

            data.Sort(comparer);

            for (int i = 0; i < data.Count; i++)
            {
                Assert.AreSame(data[i], provider.Results.Root.RowGroup.Items[i]);
            }
        }