/// <summary>
 /// Sets the <see cref="System.Windows.Data.CollectionViewSource.View.Filter"/>
 /// </summary>
 /// <param name="viewSource">the <see cref="System.Windows.Data.CollectionViewSource"/></param>
 /// <param name="filter">the filter of the View</param>
 public static void SetFilter(CollectionViewSource viewSource, Predicate <object> filter)
 {
     if (!FrameworkDispatcherUtility.HasCurrentWindowsApplication())
     {
         return;
     }
     viewSource.CheckViewSource();
     viewSource.View.Filter = filter;
 }
        /// <summary>
        /// Gets the <see cref="System.Windows.Data.CollectionViewSource"/>.
        /// </summary>
        /// <param name="source">the Source</param>
        public static CollectionViewSource GetCollectionViewSource(object source)
        {
            if (!FrameworkDispatcherUtility.HasCurrentWindowsApplication())
            {
                return(null);
            }
            var viewSource = new CollectionViewSource();

            SetSource(viewSource, source);
            viewSource.CheckViewSource();
            return(viewSource);
        }
 /// <summary>
 /// Applies a sort with the specified descriptions.
 /// </summary>
 /// <param name="viewSource">the <see cref="System.Windows.Data.CollectionViewSource"/></param>
 /// <param name="descriptions">the sort descriptions</param>
 public static void ApplySort(CollectionViewSource viewSource, IEnumerable <SortDescription> descriptions)
 {
     if (!FrameworkDispatcherUtility.HasCurrentWindowsApplication())
     {
         return;
     }
     viewSource.CheckViewSource();
     if (viewSource.SortDescriptions.Any())
     {
         viewSource.SortDescriptions.Clear();
     }
     descriptions.ForEachInEnumerable(i => viewSource.SortDescriptions.Add(i));
 }
        /// <summary>
        /// Applies the groupings.
        /// </summary>
        /// <param name="viewSource">The view source.</param>
        /// <param name="groupings">The groupings.</param>
        public static void ApplyGroupings(CollectionViewSource viewSource, IEnumerable <GroupDescription> groupings)
        {
            if (!FrameworkDispatcherUtility.HasCurrentWindowsApplication())
            {
                return;
            }
            viewSource.CheckViewSource();

            using (viewSource.DeferRefresh())
            {
                if (viewSource.GroupDescriptions.Any())
                {
                    viewSource.GroupDescriptions.Clear();
                }
                groupings.ForEachInEnumerable(i => viewSource.GroupDescriptions.Add(i));
            }
        }