public SendEditPostPageViewModel(CancellationTokenSource cts, PostEditDataModel editData,
                                         Action <int, int, string> beforeUpload, Action <string> insertFileCodeIntoContentTextBox, Action <int> afterUpload, Action <string> sentFailded, Action <string> sentSuccess)
        {
            ShowUnusedImage(cts);

            Title          = editData.Title;
            Content        = editData.Content;
            AttachFileList = editData.AttachFileList;
            _postId        = editData.PostId;
            _threadId      = editData.ThreadId;
            _beforeUpload  = beforeUpload;
            _insertFileCodeIntoContentTextBox = insertFileCodeIntoContentTextBox;
            _afterUpload = afterUpload;
            _sentSuccess = sentSuccess;
            _sentFailded = sentFailded;

            //RemoveAttachFileCommand = new DelegateCommand();
            //RemoveAttachFileCommand.ExecuteAction = (p) =>
            //{
            //    int a = 1;
            //};

            //InsertAttachFileCommand = new DelegateCommand();
            //InsertAttachFileCommand.ExecuteAction = (p) =>
            //{
            //    int b = 1;
            //};

            AddAttachFilesCommand = new DelegateCommand();
            AddAttachFilesCommand.ExecuteAction = async(p) =>
            {
                var data = await SendService.UploadFileAsync(cts, _beforeUpload, _afterUpload);

                if (data[0] != null && data[0].Count > 0)
                {
                    _fileAddList.AddRange(data[0]);
                }
                if (data[1] != null && data[1].Count > 0)
                {
                    _fileCodeList.AddRange(data[1]);
                }

                if (_fileCodeList.Count > 0)
                {
                    string fileCodes = string.Join("\r\n", _fileCodeList).Trim();
                    _insertFileCodeIntoContentTextBox($"{fileCodes}\r\n");
                    _fileCodeList.Clear();

                    ShowUnusedImage(cts);
                }
            };

            SendCommand = new DelegateCommand();
            SendCommand.ExecuteAction = async(p) =>
            {
                if (string.IsNullOrEmpty(Content))
                {
                    _sentFailded?.Invoke("请填写内容!");
                    return;
                }

                await SendService.SendEditPostAsync(cts, Title, Content, _fileAddList, _fileRemoveList, _postId, _threadId);

                _fileAddList.Clear();
                _fileRemoveList.Clear();

                Title   = string.Empty;
                Content = string.Empty;

                // 提示发贴成功
                _sentSuccess?.Invoke(Title);
            };
        }