private async Task Search(bool isFirst)
        {
            if ( Form.HasError || mIsSeaching)
            {
                return;
            }
            if (isFirst != true && mIsLoadedAllData)
            {
                return;
            }
            IsPageDataLoading = !isFirst;
            mIsSeaching = true;
            if (isFirst)
            {
                mIsLoadedAllData = false;
                mCacheSearchForm = Form.Clone() as  SearchForm;
                this.Xiakes.Clear();
            }

            try
            {

                XiakeType[] xiakeTypes =
                    mCacheSearchForm.Types.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)
                        .Select(a => (XiakeType)Enum.Parse(typeof(XiakeType), a)).ToArray();
                XiakeLevel[] xiakeLevels = mCacheSearchForm.Levels.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)
                    .Select(a => (XiakeLevel)Enum.Parse(typeof(XiakeLevel), a)).ToArray();
                XiakeStatus[] xiakeStatus = mCacheSearchForm.Status.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)
                    .Select(a => (XiakeStatus)Enum.Parse(typeof(XiakeStatus), a)).ToArray();


                var rv = await Task.Run(() =>
                {
                    return mXiakeMgmtService.SearchXiakesByMengzhu(xiakeTypes,xiakeLevels, xiakeStatus,
                        mCacheSearchForm.XiakeName,isFirst ? 0 : mLastId,mCacheSearchForm.IsTimeRangeRequired, mCacheSearchForm.SearchTimeType, mCacheSearchForm.StartDate,
                        mCacheSearchForm.EndDate, mCacheSearchForm.IsOnline);
                });
                foreach(var xk in rv.Items)
                { 
                    var x = new UIXiake()
                    {
                        ID = xk.ID,
                        Name = xk.Name,
                        QQ = xk.QQ,
                        Mail = xk.Mail,
                        Type = xk.Type,
                        Level = xk.Level,
                        Status = xk.Status,
                        JoinTime = xk.JoinTime,
                        LastLoginTime = xk.LastLoginTime,
                        LoginCount = xk.LoginCount,
                        Credits = xk.Credits,
                        IsOnline = xk.IsOnline
                    };
                    this.Xiakes.Add(x);
                }

                if (rv.Items.Count > 0)
                {
                    mLastId = rv.Items[rv.Items.Count - 1].ID;
                }
                mIsLoadedAllData = rv.IsLoadedAllData;
                if (isFirst)
                {
                    XiakeView.View.MoveCurrentToFirst();
                    TotalCount = rv.TotalCount;
                }
            } catch(Exception)
            {
                throw;
            }
            finally
            {
                mIsSeaching = false;
                IsPageDataLoading = false;
            }
            
        }
 public XiakeMgmtViewModel(   ) 
 { 
     //BindingOperations.EnableCollectionSynchronization(Servers,LockObject);
     Form = new SearchForm();
 }