using ComPDFKitViewer.AnnotEvent; using PDF_Master.CustomControl.CompositeControl; using PDF_Master.Helper; using PDF_Master.Properties; using PDFSettings; using Prism.Mvvm; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Media; namespace PDF_Master.Model.AnnotPanel { //注释的通用属性 public class AnnotCommon : BindableBase { //注释类型 private AnnotArgsType _annotType; public AnnotArgsType AnnotType { get { return _annotType; } set => SetProperty(ref _annotType, value); } //注释类型名称 private string _annotTypeTitle; public string AnnotTypeTitle { get { return _annotTypeTitle; } set => SetProperty(ref _annotTypeTitle, value); } #region 线条 //线条粗细大小 private double _annotThickness = 1; public double AnnotThickness { get { return _annotThickness; } set => SetProperty(ref _annotThickness, value); } //线条样式 private DashStyle dash = new DashStyle(); public DashStyle Dash { get { return dash; } set => SetProperty(ref dash, value); } #endregion 线条 #region 填充 //填充颜色透明度 private double fillOpacity = 1; public double FillOpacity { get { return fillOpacity; } set => SetProperty(ref fillOpacity, value); } //当前填充颜色 private Brush _currentFillColor = App.Current.FindResource("color.sys.layout.divider.text-date-fill") as Brush; public Brush CurrentFillColor { get { return _currentFillColor; } set => SetProperty(ref _currentFillColor, value); } //填充颜色 private Brush fillColor = new SolidColorBrush(Colors.Transparent); public Brush FillColor { get { return fillColor; } set { SetProperty(ref fillColor, value); CurrentFillColor = fillColor; } } //边框颜色集合 private List _colorItems = new List(); public List ColorItems { get { return _colorItems; } set => SetProperty(ref _colorItems, value); } //填充颜色集合 private List _fillColorItems = new List(); public List FillColorItems { get { return _fillColorItems; } set => SetProperty(ref _fillColorItems, value); } #endregion 填充 #region 边框 //边框颜色透明度 private double _borderOpacity = 1; public double BorderOpacity { get { return _borderOpacity; } set => SetProperty(ref _borderOpacity, value); } private Brush _borderColor = new SolidColorBrush(Colors.Transparent); public Brush BorderColor { get { return _borderColor; } set { SetProperty(ref _borderColor, value); CurrentBorderColor = _borderColor; } } //当前边框颜色 private Brush _currentBorderColor = App.Current.FindResource("color.sys.layout.divider.shapes-border") as Brush; public Brush CurrentBorderColor { get { return _currentBorderColor; } set => SetProperty(ref _currentBorderColor, value); } private Brush _fontColor = new SolidColorBrush(Colors.Transparent); public Brush FontColor { get { return _fontColor; } set { SetProperty(ref _fontColor, value); CurrentFontColor = _fontColor; } } //当前边框颜色 private Brush _currentFontColor=App.Current.FindResource("color.sys.layout.divider.pen") as Brush; public Brush CurrentFontColor { get { return _currentFontColor; } set => SetProperty(ref _currentFontColor, value); } //是否为实线 private bool _isSolidLine = true; public bool IsSolidLine { get { return _isSolidLine; } set => SetProperty(ref _isSolidLine, value); } //是否为虚线 private bool _isDashLine = true; public bool IsDashLine { get { return _isDashLine; } set => SetProperty(ref _isDashLine, value); } //外部UI引用,其他:例如形状注释类型 public string strOtherTag { get; private set; } //VM赋值 public void SetOtherTag(string str) { strOtherTag = str; } #endregion 边框 #region 多选 //多选注释:用处 - 多选注释使得下拉框为空内容,刷新最新的UI布局 private bool _isMultiSelected = false; public bool IsMultiSelected { get { return _isMultiSelected; } set => SetProperty(ref _isMultiSelected, value); } private bool isFreeHandSelected = true; public bool IsFreeHandSelected { get { return isFreeHandSelected; } set { SetProperty(ref isFreeHandSelected, value); } } private bool isSharpAnnotSelected = true; public bool IsSharpAnnotSelected { get { return isSharpAnnotSelected; } set { SetProperty(ref isSharpAnnotSelected, value); } } #endregion 多选 /// /// VM触发到外部UI事件 /// public event EventHandler SelectedAnnotInvokeToUI; //Todo:由于考虑到有些UI在VM不太方便处理,因此需要触发该函数到外部xaml.cs里更改UI属性。 //更改多个属性:value可为键值对集合 //适应范围:若VM在Loaded进行绑定,需要UI初始化之后,才能起到作用 public void InvokeToUI(object sender, object value) { SelectedAnnotInvokeToUI?.Invoke(sender, value); } } }