/// <summary>
        /// Initializes a new instance of the <see cref="DomainCollectionView"/>
        /// </summary>
        /// <param name="collectionViewLoader">The <see cref="CollectionViewLoader"/> to use for loading data</param>
        /// <param name="source">The source collection for this view. All updates to the
        /// source will be reflected in the view.
        /// </param>
        public DomainCollectionView(CollectionViewLoader collectionViewLoader, IEnumerable source)
        {
            if (collectionViewLoader == null)
            {
                throw new ArgumentNullException("collectionViewLoader");
            }
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }

            this._collectionViewLoader = collectionViewLoader;
            this._collectionViewLoader.CanLoadChanged += this.OnCollectionViewLoaderCanLoadChanged;
            this._collectionViewLoader.LoadCompleted  += this.OnLoadCompleted;

            this.CollectionView         = DomainCollectionView.CreateView(source);
            this.EditableCollectionView = this.CollectionView as IEditableCollectionView;
            if (this.EditableCollectionView == null)
            {
                throw new InvalidOperationException(Resources.MustImplementIecv);
            }
            this.PagedCollectionView = new DomainPagedCollectionView(this.LoadPage);

            this.SetPageIndex(this.PagedCollectionView.PageIndex);

            this.CalculateAll();
        }
 /// <summary>
 /// Applies the current <see cref="SortDescriptions"/> to the wrapped view
 /// </summary>
 private void SyncToCurrentSortDescriptions()
 {
     DomainCollectionView.CopySortDescriptions(this.SortDescriptions, base.SortDescriptions);
 }
 /// <summary>
 /// Applies the wrapped view descriptions to the <see cref="SortDescriptions"/>
 /// </summary>
 private void SyncToWrappedSortDescriptions()
 {
     DomainCollectionView.CopySortDescriptions(base.SortDescriptions, this.SortDescriptions);
 }
 /// <summary>
 /// Applies the current <see cref="GroupDescriptions"/> to the wrapped view
 /// </summary>
 private void SyncToCurrentGroupDescriptions()
 {
     DomainCollectionView.CopyGroupDescriptions(this.GroupDescriptions, base.GroupDescriptions);
 }
 /// <summary>
 /// Applies the wrapped view descriptions to the <see cref="GroupDescriptions"/>
 /// </summary>
 private void SyncToWrappedGroupDescriptions()
 {
     DomainCollectionView.CopyGroupDescriptions(base.GroupDescriptions, this.GroupDescriptions);
 }