private void SortData(PrintOrderPageViewModel p, DataGrid dg, DataGridColumn col)
        {
            if (dg == null)
            {
                MessageBox.Show("事件源不是DataGrid无法排序");
                return;
            }
            string sortPath = col.SortMemberPath;

            if (p.OrderViewModels.Count < 1)
            {
                return;
            }
            var sortType = col.SortDirection == null ? ListSortDirection.Ascending : (col.SortDirection == ListSortDirection.Ascending ? ListSortDirection.Descending : ListSortDirection.Ascending);
            List <PrintOrderViewModel> newVms = null;

            if (sortPath.Contains("DoorNumber"))
            {
                //两次排序,第一次根据门牌号排,然后根据货号排序,然后根据付款时间 类型PrintOrderViewModel实际了比较接口
                List <PrintOrderViewModel> tmpList = p.OrderViewModels.ToList();
                tmpList.Sort();
                tmpList.Sort();
                tmpList.Sort();
                newVms = tmpList;
            }
            else
            {
                EnumerableKeySelector selector = new EnumerableKeySelector(p.OrderViewModels[0].GetType(), sortPath);
                if (sortType == ListSortDirection.Ascending)
                {
                    newVms = p.OrderViewModels.OrderBy(obj => selector.GetData(obj)).ToList();
                }
                else
                {
                    newVms = p.OrderViewModels.OrderByDescending(obj => selector.GetData(obj)).ToList();
                }
            }
            p.OrderViewModels.Clear();
            for (int i = 0; i < newVms.Count; i++)
            {
                newVms[i].DefaultBackground = newVms[i].Background = (i % 2 == 0) ? PrintOrderViewModel.DEFAULTBACKGROUND_LIGHTGREEN : PrintOrderViewModel.DEFAULTBACKGROUND_LIGHTPINK;
                p.OrderViewModels.Add(newVms[i]);
            }
            col.SortDirection = sortType;
        }
        private void GenTab(Order[] orders)
        {
            PrintOrderViewModel[] vms = new PrintOrderViewModel[orders.Length];
            for (int i = 0; i < orders.Length; i++)
            {
                var vm = new PrintOrderViewModel(orders[i], (i % 2 == 0) ? PrintOrderViewModel.DEFAULTBACKGROUND_LIGHTGREEN : PrintOrderViewModel.DEFAULTBACKGROUND_LIGHTPINK);
                vms[i] = vm;
            }
            this.tbTotalCount.Text = "当前订单总数: " + orders.Length;
            CheckOrder(vms);

            var groups = vms.GroupBy(obj => obj.DeliveryCompany).ToArray();

            this.printOrderPages.Clear();
            foreach (var g in groups)
            {
                var p = new PrintOrderPageViewModel(g.ToArray(), this.cbbShippers.Text.Trim());
                this.printOrderPages.Add(p);
                p.LoadBarValue();
            }
        }