protected virtual void OnSearchStart(SearchStartEventArgs args)
 {
     if (SearchStart != null)
     {
         SearchStart(this, args);
     }
 }
        public virtual void Search()
        {
            isSearchingCore = true;
            if (Criteria.Operands.Contains(EmptyCollectionCriteria))
            {
                Criteria.Operands.Remove(EmptyCollectionCriteria);
            }
            SearchStartEventArgs args = new SearchStartEventArgs(Criteria);

            OnSearchStart(args);
            if (!args.Cancel)
            {
                searchResultsCore.SuspendChangedEvents();
                searchResultsCore.Criteria = args.Criteria;
                searchResultsCore.LoadAsync(LoadSearchResultsCallback);
            }
        }