/// <summary>
        /// 文件列表上下文菜单
        /// </summary>
        /// <param name="fileDataGridItem"></param>
        void FileDataContextMenu(FileDataGridItem fileDataGridItem)
        {
            ContextMenu         contextMenu         = new ContextMenu();
            CompositeCollection contextMenuBase     = new CompositeCollection();
            CompositeCollection compositeCollection = new CompositeCollection();
            CollectionContainer collectionContainer = new CollectionContainer();

            MenuItem cmOpen = new MenuItem();

            cmOpen.Header = "打开";
            cmOpen.Click += (sender, e) => CMOpen_Click(fileDataGridItem);
            if ((string)fileDataGridItem.panFile["isdir"] != "1")
            {
                cmOpen.IsEnabled = false;
            }

            MenuItem cmDownload = new MenuItem();

            cmDownload.Header = "下载";
            cmDownload.Click += (misender, mie) => CMDownload_Click(fileDataGridItem);

            contextMenuBase.Add(cmOpen);
            contextMenuBase.Add(cmDownload);
            //contextMenuBase.Add(new Separator());
            collectionContainer.Collection = contextMenuBase;
            compositeCollection.Add(collectionContainer);
            contextMenu.ItemsSource = compositeCollection;
            contextMenu.IsOpen      = true;
        }
        /*public List<string> GetPanDownload(string fidlist)
         * {
         *  string panDownload = HttpUtil.HttpGet(string.Format("https://{0}/api/download?sign={1}&timestamp={2}&fidlist=[{3}]&type=dlink&vip=0&channel=chunlei&web=1&app_id={4}&bdstoken={5}&logid={6}&clienttype=0&startLogTime={7}", Util.Domain, Uri.EscapeDataString(Util.Sign), Util.Timestamp, fidlist, Util.App_id, Uri.EscapeDataString(Util.Bdstoken), Uri.EscapeDataString(Util.Logid), Util.GetMillisecondsTimeStamp()), HttpUtil.json);
         *  JObject result = JsonConvert.DeserializeObject<JObject>(panDownload);
         *  List<string> pdUrls = new List<string>();
         *  Console.WriteLine("Cookie: " + HttpUtil.cookieContainer.Count);
         *  if ((int)result["errno"] == 0)
         *  {
         *      List<JObject> pdList = result["dlink"].ToObject<List<JObject>>();
         *      foreach (var item in pdList)
         *      {
         *          pdUrls.Add((string)item["dlink"]);
         *      }
         *      return pdUrls;
         *  }
         *
         *  return null;
         * }*/


        #region Menu

        // 加载行
        private void FileDataListGrid_LoadingRow(object sender, DataGridRowEventArgs e)
        {
            //右键单击
            e.Row.MouseRightButtonUp += (s, a) =>
            {
                a.Handled = true;
                (sender as DataGrid).SelectedIndex = (s as DataGridRow).GetIndex();
                (s as DataGridRow).Focus();

                FileDataGridItem fileDataGridItem = fileDataGridItems.Find(delegate(FileDataGridItem fdgi) {
                    return(fdgi.fileData.Equals((s as DataGridRow).Item as FileData));
                });

                if (fileDataGridItem == null)
                {
                    return;
                }

                foreach (var item in fileDataGridItems)
                {
                    item.fileData.IsCheck = false;
                }
                fileDataGridItem.fileData.IsCheck = true;

                Console.WriteLine(fileDataGridItem.fileData.Name);

                FileDataContextMenu(fileDataGridItem);
            };
        }
 /// <summary>
 /// 上下文菜单,打开文件夹
 /// </summary>
 private void CMOpen_Click(FileDataGridItem fileDataGridItem)
 {
     Util.Dir = (string)fileDataGridItem.panFile["path"];
     GetPanList(Util.Dir);
     string[] str = Util.Dir.Split('/');
     PanFileDir.Items.Add(str[str.Length - 1]);
     PanFileDir.SelectedIndex = PanFileDir.Items.Count - 1;
 }
        //双击
        private void FileDataListGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            FileDataGridItem fileDataGridItem = fileDataGridItems.Find(delegate(FileDataGridItem fdgi) {
                return(fdgi.fileData.Equals((sender as DataGrid).SelectedItem as FileData));
            });

            if (fileDataGridItem == null)
            {
                return;
            }

            if ((string)fileDataGridItem.panFile["isdir"] == "1")
            {
                CMOpen_Click(fileDataGridItem);
            }
        }
        /// <summary>
        /// 获取百度盘文件列表
        /// </summary>
        /// <param name="dir"></param>
        /// /// <param name="page"></param>
        public void GetPanList(string dir = "/", string page = "1")
        {
            Util.PanList = HttpUtil.HttpGet(string.Format("https://{0}/api/list?order=time&desc=0&showempty=0&web=1&page={1}&num=100&dir={2}&t=0.{6}&channel=chunlei&web=1&app_id=250528&bdstoken={3}&logid={4}&clienttype=0&startLogTime={5}", Util.Domain, page, Uri.EscapeDataString(dir), Uri.EscapeDataString(Util.Bdstoken), Uri.EscapeDataString(Util.Logid), Util.GetMillisecondsTimeStamp(), Util.GetRandomString()), HttpUtil.json);
            JObject        result  = JsonConvert.DeserializeObject <JObject>(Util.PanList);
            List <JObject> panList = result["list"].ToObject <List <JObject> >();

            Dispatcher.BeginInvoke(new Action(() => {
                if (page == "1")
                {
                    fileDataLists.Clear();
                    fileDataGridItems.Clear();
                }

                foreach (JObject panFile in panList)
                {
                    FileData fileData = new FileData();
                    fileData.IsCheck  = false;
                    fileData.Name     = (string)panFile["server_filename"];
                    if ((string)panFile["isdir"] == "1")
                    {
                        fileData.Size = "-";
                    }
                    else
                    {
                        fileData.Size = Util.SizeToStorage((string)panFile["size"]);
                    }
                    fileData.Time = Util.ToDateTime((string)panFile["server_mtime"]).ToString("yyyy-MM-dd hh:mm:ss");

                    fileDataLists.Add(fileData);

                    FileDataGridItem fileDataGridItem = new FileDataGridItem();
                    fileDataGridItem.fileData         = fileData;
                    fileDataGridItem.panFile          = panFile;
                    fileDataGridItems.Add(fileDataGridItem);
                }
                //文件加载数量
                if (fileDataLists.Count % 100 == 0)
                {
                    PanFileLoadNum.Content = string.Format("已加载{0}个", fileDataLists.Count);
                }
                else
                {
                    PanFileLoadNum.Content = string.Format("已全部加载,共{0}个", fileDataLists.Count);
                }
            }));
        }
        // 左键单击
        private void FileDataListGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            FileDataGridItem fileDataGridItem = fileDataGridItems.Find(delegate(FileDataGridItem fdgi) {
                return(fdgi.fileData.Equals((sender as DataGrid).SelectedItem as FileData));
            });

            if (fileDataGridItem == null)
            {
                return;
            }

            foreach (var item in fileDataGridItems)
            {
                item.fileData.IsCheck = false;
            }
            fileDataGridItem.fileData.IsCheck = true;

            Console.WriteLine(fileDataGridItem.fileData.Name);
        }
 /// <summary>
 /// 上下文菜单,下载
 /// </summary>
 private void CMDownload_Click(FileDataGridItem fileDataGridItem)
 {
     Console.WriteLine(string.Format("https://pcs.baidu.com/rest/2.0/pcs/file?method=download&path={0}&app_id={1}", (string)fileDataGridItem.panFile["path"], Util.App_id));
     Console.WriteLine(Aria2.Aria2.AddUri(string.Format("https://pcs.baidu.com/rest/2.0/pcs/file?method=download&path={0}&app_id={1}", (string)fileDataGridItem.panFile["path"], Util.App_id),
                                          string.Format("BDUSS={0};STOKEN={1}", Util.BDUSS, Util.STOKEN)));
 }