|
@@ -14,20 +14,41 @@ using System.Windows;
|
|
|
|
|
|
namespace PDF_Office.ViewModels.Form
|
|
|
{
|
|
|
- public class FormsToolContentViewModel : BindableBase, INavigationAware
|
|
|
+ public class UpdateAttributeEvent
|
|
|
{
|
|
|
- private CPDFViewer PDFViewer;
|
|
|
+ private AnnotAttribEvent annotAttribEvent;
|
|
|
+ private AnnotEditEvent annotEditEvent;
|
|
|
+ public UpdateAttributeEvent(AnnotAttribEvent Event)
|
|
|
+ {
|
|
|
+ annotAttribEvent = Event;
|
|
|
+ }
|
|
|
|
|
|
- public ViewContentViewModel viewContentViewModel;
|
|
|
+ public UpdateAttributeEvent(AnnotEditEvent Event)
|
|
|
+ {
|
|
|
+ annotEditEvent = Event;
|
|
|
+ }
|
|
|
|
|
|
- private IRegionManager regions;
|
|
|
+ public void UpdateAttrib(AnnotAttrib attrib, object updateData)
|
|
|
+ {
|
|
|
+ if(annotAttribEvent != null)
|
|
|
+ {
|
|
|
+ annotAttribEvent.UpdateAttrib(attrib, updateData);
|
|
|
+ }
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 按钮和属性面板键值对
|
|
|
- /// </summary>
|
|
|
- private Dictionary<string, string> btnToProperty = new Dictionary<string, string>();
|
|
|
+ if (annotEditEvent != null)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- private Visibility showPreView;
|
|
|
+ public void UpdateAnnot()
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public class FormsToolContentViewModel : BindableBase, INavigationAware
|
|
|
+ {
|
|
|
+ #region 属性
|
|
|
|
|
|
/// <summary>
|
|
|
/// 显示PreView按钮
|
|
@@ -41,18 +62,46 @@ namespace PDF_Office.ViewModels.Form
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 变量
|
|
|
+ private CPDFViewer PDFViewer;
|
|
|
+
|
|
|
+ public ViewContentViewModel viewContentViewModel;
|
|
|
+
|
|
|
+ private IRegionManager regions;
|
|
|
+
|
|
|
+ private string CurrentToolBtnType;
|
|
|
+ /// <summary>
|
|
|
+ /// 按钮和属性面板键值对
|
|
|
+ /// </summary>
|
|
|
+ private Dictionary<string, string> btnToProperty = new Dictionary<string, string>();
|
|
|
+
|
|
|
+ private Visibility showPreView;
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region Command变量
|
|
|
public DelegateCommand<string> CheckedCommand { get; set; }
|
|
|
+ public DelegateCommand CancleCheckedCommand { get; set; }
|
|
|
+ public DelegateCommand<string> ClickCommand { get; set; }
|
|
|
|
|
|
+ public event EventHandler<string> UncheckedToolsBtnEvent;
|
|
|
+
|
|
|
+ #endregion
|
|
|
|
|
|
+ #region 初始化
|
|
|
|
|
|
public FormsToolContentViewModel(IRegionManager regionManager)
|
|
|
{
|
|
|
regions = regionManager;
|
|
|
|
|
|
CheckedCommand = new DelegateCommand<string>(CheckedEvent);
|
|
|
+ CancleCheckedCommand = new DelegateCommand(CancleChecked);
|
|
|
+ ClickCommand = new DelegateCommand<string>(ClickEvent);
|
|
|
InitBtnToProperty();
|
|
|
}
|
|
|
|
|
|
+
|
|
|
private void InitBtnToProperty()
|
|
|
{
|
|
|
btnToProperty.Add("Text", "TextFieldProperty");
|
|
@@ -64,6 +113,10 @@ namespace PDF_Office.ViewModels.Form
|
|
|
btnToProperty.Add("Sign", "SignProperty");
|
|
|
}
|
|
|
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 属性面板
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// Form
|
|
|
/// </summary>
|
|
@@ -71,20 +124,56 @@ namespace PDF_Office.ViewModels.Form
|
|
|
private void CheckedEvent(string type)
|
|
|
{
|
|
|
AddToPropertyPanel(type);
|
|
|
+ }
|
|
|
+
|
|
|
+ //
|
|
|
+ private void ClickEvent(string obj)
|
|
|
+ {
|
|
|
|
|
|
+ if (string.IsNullOrEmpty(obj) == false)
|
|
|
+ {
|
|
|
+ if (CurrentToolBtnType == obj)
|
|
|
+ {
|
|
|
+ PDFViewer.SetMouseMode(MouseModes.FormEditTool);
|
|
|
+ PDFViewer.SetToolParam(new AnnotHandlerEventArgs());
|
|
|
+ UncheckedToolsBtnEvent?.Invoke(null, CurrentToolBtnType);
|
|
|
+ CurrentToolBtnType = "";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ CurrentToolBtnType = obj;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- private void AddToPropertyPanel(string type, WidgetArgs widget = null)
|
|
|
+ private void AddToPropertyPanel(string type, WidgetArgs widget = null, AnnotAttribEvent e = null)
|
|
|
{
|
|
|
if (btnToProperty.ContainsKey(type))
|
|
|
{
|
|
|
NavigationParameters parameters = new NavigationParameters();
|
|
|
parameters.Add(ParameterNames.PDFViewer, PDFViewer);
|
|
|
parameters.Add("WidgetArgs", widget);
|
|
|
+ parameters.Add(ParameterNames.AnnotEvent, e);
|
|
|
regions.RequestNavigate(RegionNames.PropertyRegionName, btnToProperty[type], parameters);
|
|
|
ShowPropertyPanel(true);
|
|
|
}
|
|
|
}
|
|
|
+ private void ShowPropertyPanel(bool show = true)
|
|
|
+ {
|
|
|
+ viewContentViewModel.IsPropertyOpen = show;
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 工具按钮
|
|
|
+ private void CancleChecked()
|
|
|
+ {
|
|
|
+ PDFViewer.SetMouseMode(MouseModes.FormEditTool);
|
|
|
+ PDFViewer.SetToolParam(new AnnotHandlerEventArgs());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ #endregion
|
|
|
|
|
|
#region 获取Form
|
|
|
|
|
@@ -126,17 +215,77 @@ namespace PDF_Office.ViewModels.Form
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
- private void ShowPropertyPanel(bool show = true)
|
|
|
- {
|
|
|
- viewContentViewModel.IsPropertyOpen = show;
|
|
|
- }
|
|
|
-
|
|
|
#region 表单内部触发的事件(比如选中表单行为等)
|
|
|
private void PDFViewer_WidgetClickHander(object sender, WidgetArgs e)
|
|
|
{
|
|
|
+ if (e != null)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ private void PDFViewer_AnnotActiveHandler(object sender, AnnotAttribEvent e)
|
|
|
+ {
|
|
|
+ if (e != null)
|
|
|
+ {
|
|
|
+
|
|
|
+ var annotHandlerEventArgs = e.AnnotItemsList[0];
|
|
|
+ if (annotHandlerEventArgs as WidgetArgs != null)
|
|
|
+ {
|
|
|
+ var widgetArgs = annotHandlerEventArgs as WidgetArgs;
|
|
|
+ GetSelectWidget(widgetArgs,e);
|
|
|
+ UncheckedToolsBtnEvent?.Invoke(null, CurrentToolBtnType);
|
|
|
+ CurrentToolBtnType = "";
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
+ private void PDFViewer_AnnotEditHandler(object sender, List<AnnotEditEvent> e)
|
|
|
+ {
|
|
|
+ if(e != null && e.Count > 0)
|
|
|
+ {
|
|
|
+ var widgeArgs = e[0].EditAnnotArgs as WidgetArgs;
|
|
|
+ if(widgeArgs != null)
|
|
|
+ {
|
|
|
+
|
|
|
+ // GetSelectWidget(widgeArgs,e[0]);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+ //获取View选中的表单
|
|
|
+ private void GetSelectWidget(WidgetArgs widgetArgs, AnnotAttribEvent e)
|
|
|
+ {
|
|
|
+ if (widgetArgs == null) return;
|
|
|
+
|
|
|
+ switch (widgetArgs.WidgeType)
|
|
|
+ {
|
|
|
+ case ComPDFKit.PDFAnnotation.Form.C_WIDGET_TYPE.WIDGET_TEXTFIELD:
|
|
|
+ AddToPropertyPanel("Text", widgetArgs,e);
|
|
|
+ break;
|
|
|
+ case ComPDFKit.PDFAnnotation.Form.C_WIDGET_TYPE.WIDGET_CHECKBOX:
|
|
|
+ AddToPropertyPanel("CheckBox", widgetArgs, e);
|
|
|
+ break;
|
|
|
+ case ComPDFKit.PDFAnnotation.Form.C_WIDGET_TYPE.WIDGET_RADIOBUTTON:
|
|
|
+ AddToPropertyPanel("RadioButton", widgetArgs, e);
|
|
|
+ break;
|
|
|
+ case ComPDFKit.PDFAnnotation.Form.C_WIDGET_TYPE.WIDGET_LISTBOX:
|
|
|
+ AddToPropertyPanel("ListBox", widgetArgs, e);
|
|
|
+ break;
|
|
|
+ case ComPDFKit.PDFAnnotation.Form.C_WIDGET_TYPE.WIDGET_COMBOBOX:
|
|
|
+ AddToPropertyPanel("Combox", widgetArgs, e);
|
|
|
+ break;
|
|
|
+ case ComPDFKit.PDFAnnotation.Form.C_WIDGET_TYPE.WIDGET_PUSHBUTTON:
|
|
|
+ AddToPropertyPanel("Button", widgetArgs, e);
|
|
|
+ break;
|
|
|
+ case ComPDFKit.PDFAnnotation.Form.C_WIDGET_TYPE.WIDGET_SIGNATUREFIELDS:
|
|
|
+ AddToPropertyPanel("Sign", widgetArgs, e);
|
|
|
+ break;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
#endregion
|
|
|
|
|
|
#region Navegation
|
|
@@ -144,10 +293,10 @@ namespace PDF_Office.ViewModels.Form
|
|
|
{
|
|
|
return true;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
public void OnNavigatedFrom(NavigationContext navigationContext)
|
|
|
{
|
|
|
-
|
|
|
+ CurrentToolBtnType = "";
|
|
|
}
|
|
|
|
|
|
public void OnNavigatedTo(NavigationContext navigationContext)
|
|
@@ -160,12 +309,17 @@ namespace PDF_Office.ViewModels.Form
|
|
|
|
|
|
private void BindingFormHandler()
|
|
|
{
|
|
|
- if(PDFViewer != null)
|
|
|
+ if (PDFViewer != null)
|
|
|
{
|
|
|
PDFViewer.WidgetClickHander -= PDFViewer_WidgetClickHander;
|
|
|
PDFViewer.WidgetClickHander += PDFViewer_WidgetClickHander;
|
|
|
+ PDFViewer.AnnotActiveHandler -= PDFViewer_AnnotActiveHandler;
|
|
|
+ PDFViewer.AnnotActiveHandler += PDFViewer_AnnotActiveHandler;
|
|
|
+ PDFViewer.AnnotEditHandler -= PDFViewer_AnnotEditHandler;
|
|
|
+ PDFViewer.AnnotEditHandler += PDFViewer_AnnotEditHandler;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
#endregion
|
|
|
}
|
|
|
}
|