using ComPDFKitViewer.AnnotEvent; using ComPDFKitViewer.PdfViewer; using PDF_Office.Model; using PDF_Office.Model.AnnotPanel; using Prism.Commands; using Prism.Mvvm; using Prism.Regions; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PDF_Office.ViewModels.PropertyPanel.AnnotPanel { class SignatureAnnotPropertyViewModel : BindableBase, INavigationAware { private CPDFViewer PDFViewer; private IDialogService dialogs; public DelegateCommand ShowDialogCommand { get; set; } public ObservableCollection SignatureList { get; set; } public SignatureAnnotPropertyViewModel(IDialogService dialogService) { dialogs = dialogService; ShowDialogCommand = new DelegateCommand(ShowDialog); SignatureList = new ObservableCollection(); } public void SetSignature(Signature signature) { switch (signature.Type) { case SignatureType.TextType: case SignatureType.ImageType: StampAnnotArgs stampArgs = new StampAnnotArgs(); stampArgs.Opacity = 1; stampArgs.Type = StampType.IMAGE_STAMP; stampArgs.ImagePath = signature.SourcePath; PDFViewer.SetMouseMode(MouseModes.AnnotCreate); PDFViewer.SetToolParam(stampArgs); break; case SignatureType.Drawing: break; default: break; } } private void ShowDialog() { bool result = true; DialogParameters value = new DialogParameters(); value.Add(ParameterNames.PDFViewer, PDFViewer); dialogs.ShowDialog(DialogNames.SignatureCreateDialog, value, e => { if (e.Result != ButtonResult.OK) { result = false; } SignatureCreateDialogViewModel DialogVM = e.Parameters.GetValue(ParameterNames.DataModel); if (DialogVM != null) { CreateSignature(DialogVM); } }); if (!result) { return; } } /// /// 创建签名,并保存到APP缓存 /// /// private void CreateSignature(SignatureCreateDialogViewModel viewModel) { Signature Signature = new Signature(); Signature.SourcePath = viewModel.SaveToPath; Signature.Type = (SignatureType)viewModel.TabItemIndex; SignatureList.Add(Signature); } public bool IsNavigationTarget(NavigationContext navigationContext) { return true; } public void OnNavigatedFrom(NavigationContext navigationContext) { return; } public void OnNavigatedTo(NavigationContext navigationContext) { navigationContext.Parameters.TryGetValue(ParameterNames.PDFViewer, out PDFViewer); if (PDFViewer == null) { return; } } } }