Browse Source

Form - 更改公共属性,触发事件

chenrongqian 2 years ago
parent
commit
07521eeeec

+ 54 - 3
PDF Office/ViewModels/Form/ButtonPropertyViewModel.cs

@@ -60,9 +60,11 @@ namespace PDF_Office.ViewModels.Form
 
         private void InitCommand()
         {
-
+            ChangeValueHandler -= ChangeValue;
+            ChangeValueHandler += ChangeValue;
         }
 
+      
         #endregion
 
 
@@ -95,10 +97,12 @@ namespace PDF_Office.ViewModels.Form
             navigationContext.Parameters.TryGetValue<WidgetPushButtonArgs>("WidgetArgs", out pushButtonArgs);
 
             GetWidgeText();
+            GetProperty();
         }
 
         private void GetWidgeText()
         {
+            PDFViewer.SetMouseMode(MouseModes.FormEditTool);
             if (pushButtonArgs == null)
             {
                 WidgetPushButtonArgs pushButtonArgs = new WidgetPushButtonArgs();
@@ -116,12 +120,59 @@ namespace PDF_Office.ViewModels.Form
 
                 this.pushButtonArgs = pushButtonArgs;
             }
+            else
+            {
+                PDFViewer.SetToolParam(new AnnotHandlerEventArgs());
+            }
+        }
 
-            PDFViewer.SetMouseMode(MouseModes.FormEditTool);
-            PDFViewer.SetToolParam(pushButtonArgs);
+        private void GetProperty()
+        {
+            
         }
 
+        //更改基类公共属性后,触发的事件
+        private void ChangeValue(object sender, FormAttributeType e)
+        {
+            switch (e)
+            {
+                case FormAttributeType.Name:
+                    break;
+
+                case FormAttributeType.ToolTip:
+
+                    break;
+
+                case FormAttributeType.IsSolid:
+                    break;
 
+                case FormAttributeType.IsLocked:
+                    break;
+
+                case FormAttributeType.HeightSize:
+                    break;
+
+                case FormAttributeType.BorderThiness:
+                    break;
+
+                case FormAttributeType.BorderColor:
+                    break;
+
+                case FormAttributeType.ContentColor:
+                    break;
+
+                case FormAttributeType.IsReadOnly:
+                    break;
+
+                case FormAttributeType.WidthSize:
+                    break;
+
+                case FormAttributeType.IsRequiredField:
+                    break;
+
+            }
+
+        }
         #endregion
     }
 }

+ 54 - 3
PDF Office/ViewModels/Form/CheckBoxPropertyViewModel.cs

@@ -63,7 +63,8 @@ namespace PDF_Office.ViewModels.Form
 
         private void InitCommand()
         {
-
+            ChangeValueHandler -= ChangeValue;
+            ChangeValueHandler += ChangeValue;
         }
 
         #endregion
@@ -102,16 +103,66 @@ namespace PDF_Office.ViewModels.Form
 
         private void GetWidgeText()
         {
+            PDFViewer.SetMouseMode(MouseModes.FormEditTool);
             if (checkBoxArgs == null)
             {
                 checkBoxArgs = new WidgetCheckBoxArgs();
+                checkBoxArgs.BgColor = Colors.Transparent;
+                checkBoxArgs.FontColor = Colors.Black;
+                checkBoxArgs.LineWidth = 1;
+                checkBoxArgs.LineColor = Colors.Black;
+                checkBoxArgs.FieldName = "CheckBox1";
+                PDFViewer.SetToolParam(checkBoxArgs);
+            }
+            else
+            {
+                PDFViewer.SetToolParam(new AnnotHandlerEventArgs());
             }
 
-            PDFViewer.SetMouseMode(MouseModes.FormEditTool);
-            PDFViewer.SetToolParam(checkBoxArgs);
         }
 
+        //更改基类公共属性后,触发的事件
+        private void ChangeValue(object sender, FormAttributeType e)
+        {
+            switch (e)
+            {
+                case FormAttributeType.Name:
+                    break;
+
+                case FormAttributeType.ToolTip:
+
+                    break;
+
+                case FormAttributeType.IsSolid:
+                    break;
+
+                case FormAttributeType.IsLocked:
+                    break;
 
+                case FormAttributeType.HeightSize:
+                    break;
+
+                case FormAttributeType.BorderThiness:
+                    break;
+
+                case FormAttributeType.BorderColor:
+                    break;
+
+                case FormAttributeType.ContentColor:
+                    break;
+
+                case FormAttributeType.IsReadOnly:
+                    break;
+
+                case FormAttributeType.WidthSize:
+                    break;
+
+                case FormAttributeType.IsRequiredField:
+                    break;
+
+            }
+
+        }
         #endregion
     }
 }

+ 60 - 3
PDF Office/ViewModels/Form/ComboxPropertyViewModel.cs

@@ -8,6 +8,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Windows.Media;
 
 namespace PDF_Office.ViewModels.Form
 {
@@ -57,7 +58,8 @@ namespace PDF_Office.ViewModels.Form
 
         private void InitCommand()
         {
-
+            ChangeValueHandler -= ChangeValue;
+            ChangeValueHandler += ChangeValue;
         }
 
         #endregion
@@ -96,16 +98,71 @@ namespace PDF_Office.ViewModels.Form
 
         private void GetWidgeText()
         {
+            PDFViewer.SetMouseMode(MouseModes.FormEditTool);
+
             if (comboBoxArgs == null)
             {
                 comboBoxArgs = new WidgetComboBoxArgs();
+                comboBoxArgs.BgColor = Colors.White;
+                comboBoxArgs.FontFamily = "Courier New";
+                comboBoxArgs.FontSize = 12;
+                comboBoxArgs.FontColor = Colors.Black;
+                comboBoxArgs.LineColor = Colors.Black;
+                comboBoxArgs.LineWidth = 1;
+                comboBoxArgs.FieldName = "ComBox";
+                PDFViewer.SetToolParam(comboBoxArgs);
+            }
+            else
+            {
+                PDFViewer.SetToolParam(new AnnotHandlerEventArgs());
             }
 
-            PDFViewer.SetMouseMode(MouseModes.FormEditTool);
-            PDFViewer.SetToolParam(comboBoxArgs);
+            
+           
         }
 
+        //更改基类公共属性后,触发的事件
+        private void ChangeValue(object sender, FormAttributeType e)
+        {
+            switch (e)
+            {
+                case FormAttributeType.Name:
+                    break;
+
+                case FormAttributeType.ToolTip:
+
+                    break;
+
+                case FormAttributeType.IsSolid:
+                    break;
 
+                case FormAttributeType.IsLocked:
+                    break;
+
+                case FormAttributeType.HeightSize:
+                    break;
+
+                case FormAttributeType.BorderThiness:
+                    break;
+
+                case FormAttributeType.BorderColor:
+                    break;
+
+                case FormAttributeType.ContentColor:
+                    break;
+
+                case FormAttributeType.IsReadOnly:
+                    break;
+
+                case FormAttributeType.WidthSize:
+                    break;
+
+                case FormAttributeType.IsRequiredField:
+                    break;
+
+            }
+
+        }
         #endregion
     }
 }

+ 31 - 12
PDF Office/ViewModels/Form/FormBaseVM.cs

@@ -8,22 +8,41 @@ using System.Windows.Media;
 
 namespace PDF_Office.ViewModels.Form
 {
+    public enum FormAttributeType
+    {
+        Name,
+        ToolTip,
+        IsReadOnly,
+        IsRequiredField,
+        IsLocked,
+        //外观
+        BorderThiness,
+        IsSolid,
+        WidthSize,
+        HeightSize,
+        BorderColor,
+        ContentColor
+    }
     public class FormBaseVM : BindableBase
     {
+        #region 触发事件
+        public event EventHandler<FormAttributeType> ChangeValueHandler;
+        #endregion
+
         #region 一般
         //提示
         private string _toolTipStr;
         public string ToolTipStr
         {
             get { return _toolTipStr; }
-            set { SetProperty(ref _toolTipStr, value); }
+            set { SetProperty(ref _toolTipStr, value); ChangeValueHandler?.Invoke(null, FormAttributeType.ToolTip); }
         }
         //名称
         private string _nameStr;
         public string NameStr
         {
             get { return _nameStr; }
-            set { SetProperty(ref _nameStr, value); }
+            set { SetProperty(ref _nameStr, value); ChangeValueHandler?.Invoke(null, FormAttributeType.Name); }
         }
 
         //只读
@@ -31,7 +50,7 @@ namespace PDF_Office.ViewModels.Form
         public bool IsReadOnly
         {
             get { return _isReadOnly; }
-            set { SetProperty(ref _isReadOnly, value); }
+            set { SetProperty(ref _isReadOnly, value); ChangeValueHandler?.Invoke(null, FormAttributeType.IsReadOnly); }
         }
 
         //必填
@@ -39,14 +58,14 @@ namespace PDF_Office.ViewModels.Form
         public bool IsRequiredField
         {
             get { return _isRequiredField; }
-            set { SetProperty(ref _isRequiredField, value); }
+            set { SetProperty(ref _isRequiredField, value); ChangeValueHandler?.Invoke(null, FormAttributeType.IsRequiredField); }
         }
         //锁定
         public bool _isLocked = false;
         public bool IsLocked
         {
             get { return _isLocked; }
-            set { SetProperty(ref _isLocked, value); }
+            set { SetProperty(ref _isLocked, value); ChangeValueHandler?.Invoke(null, FormAttributeType.IsLocked); }
         }
 
         #endregion
@@ -57,42 +76,42 @@ namespace PDF_Office.ViewModels.Form
         private double BorderThiness
         {
             get { return _borderThiness; }
-            set { SetProperty(ref _borderThiness, value); }
+            set { SetProperty(ref _borderThiness, value); ChangeValueHandler?.Invoke(null, FormAttributeType.BorderThiness); }
         }
         //是否为实线条
         private bool _isSolid = true;
         private bool IsSolid
         {
             get { return _isSolid; }
-            set { SetProperty(ref _isSolid, value); }
+            set { SetProperty(ref _isSolid, value); ChangeValueHandler?.Invoke(null, FormAttributeType.IsSolid); }
         }
         //宽大小
         private double _widthSize = 150;
         private double WidthSize
         {
             get { return _widthSize; }
-            set { SetProperty(ref _widthSize, value); }
+            set { SetProperty(ref _widthSize, value); ChangeValueHandler?.Invoke(null, FormAttributeType.WidthSize); }
         }
         //高大小
         private double _heightSize = 22;
         private double HeightSize
         {
             get { return _heightSize; }
-            set { SetProperty(ref _heightSize, value); }
+            set { SetProperty(ref _heightSize, value); ChangeValueHandler?.Invoke(null, FormAttributeType.HeightSize); }
         }
         //边框颜色
         private Color _borderColor = Colors.Transparent;
         private Color BorderColor
         {
             get { return _borderColor; }
-            set { SetProperty(ref _borderColor, value); }
+            set { SetProperty(ref _borderColor, value); ChangeValueHandler?.Invoke(null, FormAttributeType.BorderColor); }
         }
         //内容颜色
         private Color _contentColor = Colors.Transparent;
-        private Color ContentColo
+        private Color ContentColor
         {
             get { return _contentColor; }
-            set { SetProperty(ref _contentColor, value); }
+            set { SetProperty(ref _contentColor, value); ChangeValueHandler?.Invoke(null, FormAttributeType.ContentColor); }
         }
 
 

+ 172 - 18
PDF Office/ViewModels/Form/FormsToolContentViewModel.cs

@@ -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
     }
 }

+ 61 - 3
PDF Office/ViewModels/Form/ListBoxPropertyViewModel.cs

@@ -8,6 +8,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Windows.Media;
 
 namespace PDF_Office.ViewModels.Form
 {
@@ -61,7 +62,8 @@ namespace PDF_Office.ViewModels.Form
 
         private void InitCommand()
         {
-
+            ChangeValueHandler -= ChangeValue;
+            ChangeValueHandler += ChangeValue;
         }
 
         #endregion
@@ -100,16 +102,72 @@ namespace PDF_Office.ViewModels.Form
 
         private void GetWidgeText()
         {
+            PDFViewer.SetMouseMode(MouseModes.FormEditTool);
+
             if (listBoxArgs == null)
             {
                 listBoxArgs = new WidgetListBoxArgs();
+                listBoxArgs.BgColor = Colors.White;
+                listBoxArgs.FontFamily = "Courier New";
+                listBoxArgs.FontSize = 12;
+                listBoxArgs.FontColor = Colors.Black;
+                listBoxArgs.LineColor = Colors.Black;
+                listBoxArgs.LineWidth = 1;
+                listBoxArgs.FieldName = "ListBox1";
+
+                PDFViewer.SetToolParam(listBoxArgs);
+            }
+            else
+            {
+                PDFViewer.SetToolParam(new AnnotHandlerEventArgs());
             }
 
-            PDFViewer.SetMouseMode(MouseModes.FormEditTool);
-            PDFViewer.SetToolParam(listBoxArgs);
+            
+            
         }
 
+        //更改基类公共属性后,触发的事件
+        private void ChangeValue(object sender, FormAttributeType e)
+        {
+            switch (e)
+            {
+                case FormAttributeType.Name:
+                    break;
+
+                case FormAttributeType.ToolTip:
+
+                    break;
+
+                case FormAttributeType.IsSolid:
+                    break;
 
+                case FormAttributeType.IsLocked:
+                    break;
+
+                case FormAttributeType.HeightSize:
+                    break;
+
+                case FormAttributeType.BorderThiness:
+                    break;
+
+                case FormAttributeType.BorderColor:
+                    break;
+
+                case FormAttributeType.ContentColor:
+                    break;
+
+                case FormAttributeType.IsReadOnly:
+                    break;
+
+                case FormAttributeType.WidthSize:
+                    break;
+
+                case FormAttributeType.IsRequiredField:
+                    break;
+
+            }
+
+        }
         #endregion
     }
 }

+ 57 - 4
PDF Office/ViewModels/Form/RadioButtonPropertyViewModel.cs

@@ -60,7 +60,8 @@ namespace PDF_Office.ViewModels.Form
 
         private void InitCommand()
         {
-
+            ChangeValueHandler -= ChangeValue;
+            ChangeValueHandler += ChangeValue;
         }
 
         #endregion
@@ -99,16 +100,68 @@ namespace PDF_Office.ViewModels.Form
 
         private void GetWidgeText()
         {
+            PDFViewer.SetMouseMode(MouseModes.FormEditTool);
+
             if (radioButtonArgs == null)
             {
                 radioButtonArgs = new WidgetRadioButtonArgs();
+                radioButtonArgs.FieldName = "RadioButton1";
+                radioButtonArgs.BgColor = Colors.Transparent;
+                radioButtonArgs.FontColor = Colors.Black;
+                radioButtonArgs.LineColor = Colors.Black;
+                radioButtonArgs.LineWidth = 1;
+                PDFViewer.SetToolParam(radioButtonArgs);
             }
-
-            PDFViewer.SetMouseMode(MouseModes.FormEditTool);
-            PDFViewer.SetToolParam(radioButtonArgs);
+            else
+            {
+                PDFViewer.SetToolParam(new AnnotHandlerEventArgs());
+            }
+           
+           
         }
 
+        //更改基类公共属性后,触发的事件
+        private void ChangeValue(object sender, FormAttributeType e)
+        {
+            switch (e)
+            {
+                case FormAttributeType.Name:
+                    break;
+
+                case FormAttributeType.ToolTip:
+
+                    break;
+
+                case FormAttributeType.IsSolid:
+                    break;
 
+                case FormAttributeType.IsLocked:
+                    break;
+
+                case FormAttributeType.HeightSize:
+                    break;
+
+                case FormAttributeType.BorderThiness:
+                    break;
+
+                case FormAttributeType.BorderColor:
+                    break;
+
+                case FormAttributeType.ContentColor:
+                    break;
+
+                case FormAttributeType.IsReadOnly:
+                    break;
+
+                case FormAttributeType.WidthSize:
+                    break;
+
+                case FormAttributeType.IsRequiredField:
+                    break;
+
+            }
+
+        }
         #endregion
     }
 }

+ 54 - 4
PDF Office/ViewModels/Form/SignPropertyViewModel.cs

@@ -8,10 +8,11 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Windows.Media;
 
 namespace PDF_Office.ViewModels.Form
 {
-    public class SignPropertyViewModel : BindableBase, INavigationAware
+    public class SignPropertyViewModel : FormBaseVM, INavigationAware
     {
         #region 属性
 
@@ -40,7 +41,8 @@ namespace PDF_Office.ViewModels.Form
 
         private void InitCommand()
         {
-
+            ChangeValueHandler -= ChangeValue;
+            ChangeValueHandler += ChangeValue;
         }
 
         #endregion
@@ -79,16 +81,64 @@ namespace PDF_Office.ViewModels.Form
 
         private void GetWidgeText()
         {
+            PDFViewer.SetMouseMode(MouseModes.FormEditTool);
+
             if (signArgs == null)
             {
                 signArgs = new WidgetSignArgs();
+                signArgs.LineWidth = 1;
+                signArgs.LineColor = Colors.Black;
+                PDFViewer.SetToolParam(signArgs);
+            }
+            else
+            {
+                PDFViewer.SetToolParam(new AnnotHandlerEventArgs());
             }
 
-            PDFViewer.SetMouseMode(MouseModes.FormEditTool);
-            PDFViewer.SetToolParam(signArgs);
         }
 
+        //更改基类公共属性后,触发的事件
+        private void ChangeValue(object sender, FormAttributeType e)
+        {
+            switch (e)
+            {
+                case FormAttributeType.Name:
+                    break;
+
+                case FormAttributeType.ToolTip:
+
+                    break;
+
+                case FormAttributeType.IsSolid:
+                    break;
 
+                case FormAttributeType.IsLocked:
+                    break;
+
+                case FormAttributeType.HeightSize:
+                    break;
+
+                case FormAttributeType.BorderThiness:
+                    break;
+
+                case FormAttributeType.BorderColor:
+                    break;
+
+                case FormAttributeType.ContentColor:
+                    break;
+
+                case FormAttributeType.IsReadOnly:
+                    break;
+
+                case FormAttributeType.WidthSize:
+                    break;
+
+                case FormAttributeType.IsRequiredField:
+                    break;
+
+            }
+
+        }
         #endregion
     }
 }

+ 115 - 6
PDF Office/ViewModels/Form/TextFieldPropertyViewModel.cs

@@ -1,6 +1,8 @@
-using ComPDFKitViewer.AnnotEvent;
+using ComPDFKitViewer;
+using ComPDFKitViewer.AnnotEvent;
 using ComPDFKitViewer.PdfViewer;
 using PDF_Office.Model;
+using Prism.Commands;
 using Prism.Mvvm;
 using Prism.Regions;
 using System;
@@ -28,7 +30,7 @@ namespace PDF_Office.ViewModels.Form
 
         //多行
         private bool _isMultiline = false;
-        public bool IsMultiline
+        public bool IsMultiLine
         {
             get { return _isMultiline; }
             set { SetProperty(ref _isMultiline, value); }
@@ -46,13 +48,19 @@ namespace PDF_Office.ViewModels.Form
 
         #endregion
 
-        #region Command
+        #region Command变量
+        public DelegateCommand<string> NameTextChangedCommand { get; set; }
+        public DelegateCommand<string> ToolTipTextChangedCommand { get; set; }
 
+        public DelegateCommand<object> IsReadOnlyCheckedCommand { get; set; }
+        public DelegateCommand<object> RequiredFieldCheckedCommand { get; set; }
+        
         #endregion
 
         #region 变量
         private CPDFViewer PDFViewer;
         private WidgetTextBoxArgs textBoxArgs;
+        public AnnotAttribEvent AttribEvent;
         #endregion
 
         #region 初始化
@@ -69,14 +77,52 @@ namespace PDF_Office.ViewModels.Form
 
         private void InitCommand()
         {
+            NameTextChangedCommand = new DelegateCommand<string>(NameTextChanged);
+            ToolTipTextChangedCommand = new DelegateCommand<string>(ToolTipTextChanged);
+            IsReadOnlyCheckedCommand = new DelegateCommand<object>(IsReadOnlyChecked);
+            RequiredFieldCheckedCommand = new DelegateCommand<object>(RequiredFieldChecked);
 
+            ChangeValueHandler -= ChangeValue;
+            ChangeValueHandler += ChangeValue;
         }
 
+
         #endregion
 
 
         #region 一般处理
+        private void NameTextChanged(string obj)
+        {
+            if(string.IsNullOrEmpty(obj) == false)
+            {
+                NameStr = obj;
+            }
+        }
+
+        private void ToolTipTextChanged(string obj)
+        {
+            if (string.IsNullOrEmpty(obj) == false)
+            {
+                ToolTipStr = obj;
+            }
+        }
 
+        private void IsReadOnlyChecked(object obj)
+        {
+            if(obj is bool)
+            {
+                IsReadOnly = (bool)obj;
+            }
+        }
+
+
+        private void RequiredFieldChecked(object obj)
+        {
+            if (obj is bool)
+            {
+                IsRequiredField = (bool)obj;
+            }
+        }
         #endregion
 
         #region 外观处理
@@ -108,6 +154,8 @@ namespace PDF_Office.ViewModels.Form
 
         private void GetWidgeText()
         {
+            PDFViewer.SetMouseMode(MouseModes.FormEditTool);
+
             if (textBoxArgs == null)
             {
                 WidgetTextBoxArgs textArgs = new WidgetTextBoxArgs();
@@ -117,13 +165,74 @@ namespace PDF_Office.ViewModels.Form
                 textArgs.FontColor = Colors.Black;
                 textArgs.FieldName = "TextBox";
                 textBoxArgs = textArgs;
+                PDFViewer.SetToolParam(textBoxArgs);
+            }
+            else
+            {
+                PDFViewer.SetToolParam(new AnnotHandlerEventArgs());
             }
 
-            PDFViewer.SetMouseMode(MouseModes.FormEditTool); 
-            PDFViewer.SetToolParam(textBoxArgs);
+            GetProperty();
         }
+        private void GetProperty()
+        {
+            if(textBoxArgs != null)
+            {
+                NameStr = textBoxArgs.FieldName;
+                IsRequiredField = textBoxArgs.IsRequired;
+                IsMultiLine = textBoxArgs.IsMultiLine;
+                
+            }
+        }
+
+        //更改基类公共属性后,触发的事件
+        private void ChangeValue(object sender, FormAttributeType e)
+        {
+           switch(e)
+            {
+                case FormAttributeType.Name:
+                    AttribEvent?.UpdateAttrib(AnnotAttrib.FieldName, NameStr);
+                    break;
+
+                case FormAttributeType.ToolTip:
+                  
+                    break;
+
+                case FormAttributeType.IsSolid:
+                    break;
+
+                case FormAttributeType.IsLocked:
+                    textBoxArgs.Locked = IsLocked;
+                    break;
+
+                case FormAttributeType.HeightSize:
+                    break;
+
+                case FormAttributeType.BorderThiness:
+                    break;
+
+                case FormAttributeType.BorderColor:
+                    break;
+
+                case FormAttributeType.ContentColor:
+                    break;
+
+                case FormAttributeType.IsReadOnly:
+                    break;
+
+                case FormAttributeType.WidthSize:
+                    break;
+
+                case FormAttributeType.IsRequiredField:
+                    break;
+
+            }
+            AttribEvent?.UpdateAnnot();
+            //textBoxArgs.UpdateAnnotByEventArgs();
+
+        }
+
 
-       
         #endregion
     }
 }

+ 17 - 4
PDF Office/Views/Form/TextFieldProperty.xaml

@@ -10,6 +10,7 @@
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     xmlns:prism="http://prismlibrary.com/"
     prism:ViewModelLocator.AutoWireViewModel="True"
+    xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
     d:DesignHeight="750"
     d:DesignWidth="260"
     Background="{StaticResource color.sys.layout.mg}"
@@ -59,19 +60,31 @@
                         Margin="0,18,0,10"
                         Style="{StaticResource PropertyHeaderLv2}"
                         Text="Name" />
-                    <cus:TextBoxEx Height="32" CornerRadius="4" />
+                    <cus:TextBoxEx x:Name="TbName" Height="32" CornerRadius="4" Text="{Binding NameStr,Mode=TwoWay}" >
+                        <!--<i:Interaction.Triggers>
+                            <i:EventTrigger EventName="TextChanged">
+                                <i:InvokeCommandAction Command="{Binding NameTextChangedCommand}" CommandParameter="{Binding ElementName=TbName,Path=Text}"/>
+                            </i:EventTrigger>
+                        </i:Interaction.Triggers>-->
+                    </cus:TextBoxEx>
                     <TextBlock
                         Margin="0,18,0,10"
                         Style="{StaticResource PropertyHeaderLv2}"
                         Text="ToolTip" />
-                    <cus:TextBoxEx Height="32" CornerRadius="4" />
+                    <cus:TextBoxEx x:Name="TbToolTip" Height="32" CornerRadius="4" >
+                        <i:Interaction.Triggers>
+                            <i:EventTrigger EventName="TextChanged">
+                                <i:InvokeCommandAction Command="{Binding ToolTipTextChangedCommand}" CommandParameter="{Binding ElementName=TbToolTip,Path=Text}"/>
+                            </i:EventTrigger>
+                        </i:Interaction.Triggers>
+                    </cus:TextBoxEx>
                     <TextBlock
                         Margin="0,18,0,10"
                         Style="{StaticResource PropertyHeaderLv2}"
                         Text="Form Field" />
                     <form:FormFieldCombox Height="32" Margin="0,8,0,16" />
-                    <CheckBox Content="Read Only" />
-                    <CheckBox Margin="0,8" Content="Required field" />
+                    <CheckBox x:Name="ReadOnlyCheckBox" Content="Read Only" Command="{Binding IsReadOnlyCheckedCommand}" CommandParameter="{Binding ElementName=ReadOnlyCheckBox,Path=IsChecked}"/>
+                    <CheckBox x:Name="RequiredFieldCheckBox" Margin="0,8" Content="Required field"  Command="{Binding RequiredFieldCheckedCommand}" CommandParameter="{Binding ElementName=RequiredFieldCheckBox,Path=IsChecked}"/>
                 </StackPanel>
             </TabItem>
             <TabItem>