using ComPDFKit.PDFDocument; using ComPDFKitViewer; using ComPDFKitViewer.AnnotEvent; using ComPDFKitViewer.PdfViewer; using PDF_Office.CustomControl; using PDF_Office.CustomControl.CompositeControl; using PDF_Office.Helper; using PDF_Office.Model.PropertyPanel.AnnotPanel; using Prism.Mvvm; using Prism.Regions; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; using System.Windows.Shapes; using static Dropbox.Api.TeamLog.AdminAlertSeverityEnum; using MenuItem = System.Windows.Controls.MenuItem; namespace PDF_Office.ViewModels.Tools { //文件说明:与布局相关的代码逻辑:菜单、属性面板 public sealed partial class AnnotToolContentViewModel : BindableBase, INavigationAware { #region 属性面板 /// /// 导航到同一个注释xaml时,需要区分某个注释;比如高亮、删除线、下划线 /// /// 对应的注释面板 /// 导航到同一个注释xaml时,需要区分某个注释;比如高亮、删除线、下划线 /// 注释 /// 更改注释属性的键值对,更改值后会自动记录undoRedo容器里 private void AddToPropertyPanel(string viewContent, string toolTag = null, List annots = null, AnnotAttribEvent annotAttribEvent = null) { if (annots != null) { propertyPanel.annotlists = annots; propertyPanel.annot = annots[0]; } else { propertyPanel.annotlists = null; propertyPanel.annot = null; } if (annots != null) { if (annots.Count > 1) { if (propertyPanel.AnnotEvents == null) propertyPanel.AnnotEvents = new List(); propertyPanel.AnnotEvents.Clear(); foreach (var itemAnnot in annots) { var eventitem = AnnotAttribEvent.GetAnnotAttribEvent(itemAnnot, itemAnnot.GetAnnotAttrib()); propertyPanel.AnnotEvents.Add(eventitem); } } propertyPanel.AnnotEvent = AnnotAttribEvent.GetAnnotAttribEvent(annots[0], annots[0].GetAnnotAttrib()); if (annots[0] is LinkAnnotArgs && annotAttribEvent != null) { propertyPanel.AnnotEvent = annotAttribEvent; } } propertyPanel.SetIsTextFill(false); if (string.IsNullOrEmpty(viewContent) == false) { viewContentViewModel.SelectedPrpoertyPanel(viewContent, propertyPanel); } } /// /// 展开显示属性面板 /// private void ShowPropertyPanel(bool show = true) { viewContentViewModel.IsPropertyOpen = show; } #endregion 属性面板 #region 阅读页 - 右键菜单 private ContextMenu ViewerContextMenu(object sender) { ContextMenu contextMenu = App.Current.FindResource("ViewerContextMenu") as ContextMenu; //contextMenu.Loaded += ContextMenu_Loaded; ViewerContextMenu_Loaded(contextMenu, sender); return contextMenu; } private void ViewerContextMenu_Loaded(object sender, object e) { ContextMenu contextMenu = sender as ContextMenu; contextMenu.DataContext = viewContentViewModel; if (contextMenu.Items.Count > 0) { int index = PDFViewer.CurrentIndex; //检测是否已存在相同数据 CPDFBookmark list = PDFViewer.Document.GetBookmarkList().FirstOrDefault(q => q.PageIndex == index); if (list != null) { isAddBookMark = false; } else { isAddBookMark = true; } foreach (var item in contextMenu.Items) { if (item is MenuItem menuItem1) { //if (menuItem1.Tag.ToString() == "DisplayAnnot" || menuItem1.Tag.ToString() == "HiddenAnnot") //{ // SetMenuItemVisibility(menuItem1, "DisplayAnnot", "HiddenAnnot", isHiddenAnnot); //} switch (menuItem1.Tag.ToString()) { case "Paste": //粘贴 //if (!ApplicationCommands.Paste.CanExecute(null, (UIElement)sender)) //{ // menuItem1.IsEnabled = false; // menuItem1.Opacity = 0.5; //} //else //{ // menuItem1.IsEnabled = true; // menuItem1.Opacity = 1; //} menuItem1.CommandTarget = (UIElement)e; menuItem1.Command = ApplicationCommands.Paste; break; case "AddAnnotation": if (menuItem1.Items.Count > 0) { SetAddAnnotation(menuItem1.Items); } break; case "HiddenAnnot": menuItem1.Click -= HiddenAnnot_Click; menuItem1.Click += HiddenAnnot_Click; SetMenuItemVisibility(menuItem1, "DisplayAnnot", "HiddenAnnot", BtnShowAnnotIsChecked); break; case "DisplayAnnot": menuItem1.Click -= DisplayAnnot_Click; menuItem1.Click += DisplayAnnot_Click; SetMenuItemVisibility(menuItem1, "DisplayAnnot", "HiddenAnnot", BtnShowAnnotIsChecked); break; case "AddBookMark": //menuItem1.Click -= AddBookMark_Click; //menuItem1.Click += AddBookMark_Click; menuItem1.Command = AddBookMarkCommand; SetMenuItemVisibility(menuItem1, "DelBookMark", "AddBookMark", isAddBookMark); break; case "DelBookMark": menuItem1.Click -= DelBookMark_Click; menuItem1.Click += DelBookMark_Click; SetMenuItemVisibility(menuItem1, "DelBookMark", "AddBookMark", isAddBookMark); break; case "ToolMode": if (menuItem1.Items.Count > 0) { SetToolMode(menuItem1.Items); } break; case "ReadModel": SetMenuItemVisibility(menuItem1, "ReadModel", "UnReadModel", viewContentViewModel.mainViewModel.IsBookMode); menuItem1.Click -= ReadModel_Click; menuItem1.Click += ReadModel_Click; break; case "UnReadModel": SetMenuItemVisibility(menuItem1, "ReadModel", "UnReadModel", viewContentViewModel.mainViewModel.IsBookMode); menuItem1.Click -= UnReadModel_Click; menuItem1.Click += UnReadModel_Click; break; case "ViewZoom": if (menuItem1.Items.Count > 0) { ViewZoom(menuItem1.Items); } break; case "PageDisplay": if (menuItem1.Items.Count > 0) { PageDisplay(menuItem1.Items); } break; case "Select": menuItem1.Click -= Select_Click; menuItem1.Click += Select_Click; break; case "Print": menuItem1.Command = viewContentViewModel.PrintCommand; break; case "HighlightLinks": if (OpenFileInfo != null) { menuItem1.IsChecked = OpenFileInfo.ShowHighLightLink; } menuItem1.Click -= HighlightLinks_Click; menuItem1.Click += HighlightLinks_Click; break; } } } } } private void HighlightLinks_Click(object sender, RoutedEventArgs e) { if (sender is MenuItem menuItem) { //if (OpenFileInfo != null) //{ // menuItem.IsChecked = OpenFileInfo.ShowHighLightLink; //} if (menuItem.IsChecked) { PDFViewer.SetShowLink(true); } else { PDFViewer.SetShowLink(false); } if (OpenFileInfo != null) { OpenFileInfo.ShowHighLightLink = menuItem.IsChecked; } //if (menuItem.IsChecked == true) //{ // menuItem.IsChecked = false; //} } } private void SetMenuItemVisibility(MenuItem menuItem1, string right, string deny, bool flag) { if (menuItem1.Tag.ToString() == right && flag) { menuItem1.Visibility = Visibility.Collapsed; } if (menuItem1.Tag.ToString() == right && flag == false) { menuItem1.Visibility = Visibility.Visible; } if (menuItem1.Tag.ToString() == deny && flag == false) { menuItem1.Visibility = Visibility.Collapsed; } if (menuItem1.Tag.ToString() == deny && flag) { menuItem1.Visibility = Visibility.Visible; } } /// /// 选择文本或者图像的右键菜单 /// /// /// /// private ContextMenu SelectedTextOrImageContextMenu(object sender, AnnotCommandArgs annotCommand) { ContextMenu popMenu = new ContextMenu(); popMenu.FontSize = 14; MenuItem menuItem = new MenuItem(); menuItem = new MenuItem(); menuItem.CommandTarget = (UIElement)sender; menuItem.Command = ApplicationCommands.Copy; popMenu.Items.Add(menuItem); menuItem = new MenuItem(); menuItem.CommandTarget = (UIElement)sender; menuItem.Command = ApplicationCommands.Paste; popMenu.Items.Add(menuItem); Separator separator = null; if (annotCommand.CommandTarget == TargetType.ImageSelection) { separator = SetSeparator(); popMenu.Items.Add(separator); SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_ExtractImage"), "ExportPicture", annotCommand, out menuItem); popMenu.Items.Add(menuItem); } else if (annotCommand.CommandTarget == TargetType.Annot) { separator = SetSeparator(); popMenu.Items.Add(separator); SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_Highlight"), "HighLight", annotCommand, out menuItem); popMenu.Items.Add(menuItem); SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_Underline"), "UnderLine", annotCommand, out menuItem); popMenu.Items.Add(menuItem); SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_Strikethrough"), "Strikeout", annotCommand, out menuItem); popMenu.Items.Add(menuItem); } separator = SetSeparator(); popMenu.Items.Add(separator); SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_Text"), "Freetext", annotCommand, out menuItem); popMenu.Items.Add(menuItem); SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_Note"), "StickyNote", annotCommand, out menuItem); popMenu.Items.Add(menuItem); separator = SetSeparator(); popMenu.Items.Add(separator); SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_Rectangle"), "Rect", annotCommand, out menuItem); popMenu.Items.Add(menuItem); SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_Oval"), "Circle", annotCommand, out menuItem); popMenu.Items.Add(menuItem); SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_StraightLine"), "Line", annotCommand, out menuItem); popMenu.Items.Add(menuItem); separator = SetSeparator(); popMenu.Items.Add(separator); SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_AddLink"), "Link", annotCommand, out menuItem); popMenu.Items.Add(menuItem); SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_AddOutline"), "OutLine", annotCommand, out menuItem); popMenu.Items.Add(menuItem); return popMenu; } private void SetSelectTextOrImageMenuItem(string header, string tag, AnnotCommandArgs annotCommand, out MenuItem menuItem) { menuItem = new MenuItem(); menuItem.Header = header; menuItem.Tag = tag; if (tag == "Link") { if (viewContentViewModel.mainViewModel.IsBookMode) { menuItem.IsEnabled = false; } else { menuItem.IsEnabled = true; } } menuItem.Click -= AnnotToolMenu_Click; menuItem.Click += AnnotToolMenu_Click; menuItem.CommandParameter = annotCommand; } private Separator SetSeparator() { Separator separator = new Separator { Height = 1, BorderBrush = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#33000000")), BorderThickness = new Thickness(1), Style = (Style)App.Current.FindResource(System.Windows.Controls.ToolBar.SeparatorStyleKey) }; return separator; } #endregion 阅读页 - 右键菜单 #region 注释-右键菜单 private ColorMenuItem colorContent; /// /// 高亮注释,右键菜单 /// private void InitSelectHightAnnotMenu() { var popMenu = new ContextMenu(); PopMenu pop = new PopMenu(popMenu); colorContent = new ColorMenuItem(); colorContent.Name = "hightcolor"; colorContent.ColorChanged -= colorContent_SelectedColorHandler; colorContent.ColorChanged += colorContent_SelectedColorHandler; colorContent.VerticalAlignment = VerticalAlignment.Top; colorContent.Margin = new Thickness(0, 0, 0, -15); var menuItem = new MenuItem(); menuItem.Name = "hightColor"; menuItem.Height = 20 + 15; menuItem.Header = colorContent; var hightColorStyle = App.Current.FindResource("UIElementMenuItem") as Style; if (hightColorStyle != null) menuItem.Style = hightColorStyle; colorContent.DataContext = pop.AddItem(menuItem); pop.AddItem(GetSeparator()); menuItem = new MenuItem(); menuItem.Name = "hightCopyText"; menuItem.Header = "复制文本"; pop.BindingEvent(pop.AddItem(menuItem), HightAnnotCopyText_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "hightdelete"; menuItem.Header = "删除"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Delete); pop.AddItem(GetSeparator()); menuItem = new MenuItem(); menuItem.Name = "hightAddNote"; menuItem.Header = "添加笔记"; pop.BindingEvent(pop.AddItem(menuItem), AnnotAddNoteText_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "hightdefault"; menuItem.Header = "设置当前属性为默认值"; pop.BindingEvent(pop.AddItem(menuItem), AnnotDefaultValue_MenuCommand); HightAnnotPopMenu = pop; } private Separator GetSeparator() { Separator separator = new Separator(); separator.Height = 1; separator.BorderBrush = new SolidColorBrush(Color.FromArgb(0x33, 0x00, 0x00, 0x00)); separator.BorderThickness = new Thickness(1); return separator; } private async void colorContent_SelectedColorHandler(object sender, Color e) { if (e == null) return; if (sender is Ellipse) { var item = new ColorDropBoxPop(); item.DataContext = (sender as Ellipse).DataContext; item.ColorSelected -= AnnotMenu_ColorSelected; item.ColorSelected += AnnotMenu_ColorSelected; if (popup == null) popup = new System.Windows.Controls.Primitives.Popup(); ContentControl window = null; if (PDFViewer.Parent as ContentControl != null) window = PDFViewer.Parent as ContentControl; else window = App.Current.MainWindow; popup.Child = item; popup.PlacementRectangle = new Rect(Mouse.GetPosition(window), new Size(item.Width, item.Height)); popup.Placement = System.Windows.Controls.Primitives.PlacementMode.MousePoint; popup.PlacementTarget = window; popup.IsOpen = true; Window parentWnd = Window.GetWindow(App.Current.MainWindow); if (parentWnd != null) { parentWnd.MouseDown -= parentWnd_MouseDown; parentWnd.MouseDown += parentWnd_MouseDown; } while (popup.IsOpen) await Task.Delay(20); parentWnd.MouseDown -= parentWnd_MouseDown; popup = null; } else { var cusMenuItem = (sender as FrameworkElement).DataContext as CusMenuItem; if (cusMenuItem != null && cusMenuItem.Parameter != null) { var test = cusMenuItem.Parameter as TextHighlightAnnotArgs; if (test != null) { var anvent = AnnotAttribEvent.GetAnnotAttribEvent(test, test.GetAnnotAttrib()); anvent.UpdateAttrib(AnnotAttrib.Color, e); anvent.UpdateAnnot(); } } } } /// /// 手绘 /// private void InitSelectFreeHandAnnotMenu() { var popMenu = new ContextMenu(); PopMenu pop = new PopMenu(popMenu); var menuItem = new MenuItem(); menuItem.Name = "FreeHandCopy"; menuItem.Header = "复制"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Copy); menuItem = new MenuItem(); menuItem.Name = "FreeHandCut"; menuItem.Header = "剪切"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Cut); menuItem = new MenuItem(); menuItem.Name = "FreeHandPaste"; menuItem.Header = "粘贴"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Paste); menuItem = new MenuItem(); menuItem.Name = "FreeHandDelete"; menuItem.Header = "删除"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Delete); pop.AddItem(GetSeparator()); menuItem = new MenuItem(); menuItem.Name = "FreeHandColor"; menuItem.Header = "边框颜色"; menuItem.Tag = "Color"; pop.BindingEvent(pop.AddItem(menuItem), AnnotColorPalette_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "FreeHandLineStyle"; menuItem.Header = "线段样式"; pop.AddItem(menuItem); RadioButton radioButton = new RadioButton(); radioButton.Style = App.Current.Resources["MenuRadioBtnStyle"] as Style; radioButton.Background = new SolidColorBrush(Colors.Transparent); radioButton.Name = "FreeHandSolid"; radioButton.Content = "实线"; radioButton.GroupName = "LineStyle"; radioButton.Tag = "Solid"; pop.BindingEvent(pop.AddChild("FreeHandLineStyle", radioButton), FreeHandLineStyle_MenuCommand); radioButton = new RadioButton(); radioButton.Style = App.Current.Resources["MenuRadioBtnStyle"] as Style; radioButton.Background = new SolidColorBrush(Colors.Transparent); radioButton.Name = "FreeHandDash"; radioButton.Content = "虚线"; radioButton.GroupName = "LineStyle"; radioButton.Tag = "Dash"; pop.BindingEvent(pop.AddChild("FreeHandLineStyle", radioButton), FreeHandLineStyle_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "FreeHandAddNote"; menuItem.Header = "添加笔记"; pop.BindingEvent(pop.AddItem(menuItem), AnnotAddNoteText_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "FreeHandDefault"; menuItem.Header = "设置当前属性为默认值"; pop.BindingEvent(pop.AddItem(menuItem), AnnotDefaultValue_MenuCommand); FreeHandAnnotPopMenu = pop; } /// /// 文本 /// private void InitSelectFreeTextAnnotMenu() { var popMenu = new ContextMenu(); PopMenu pop = new PopMenu(popMenu); var menuItem = new MenuItem(); menuItem.Name = "FreeTextCopy"; menuItem.Header = "复制"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Copy); menuItem = new MenuItem(); menuItem.Name = "FreeTextCut"; menuItem.Header = "剪切"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Cut); menuItem = new MenuItem(); menuItem.Name = "FreeTextPaste"; menuItem.Header = "粘贴"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Paste); menuItem = new MenuItem(); menuItem.Name = "FreeTextDelete"; menuItem.Header = "删除"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Delete); pop.AddItem(GetSeparator()); menuItem = new MenuItem(); menuItem.Name = "FreeTextColor"; menuItem.Header = "字体颜色"; menuItem.Tag = "FontColor"; pop.BindingEvent(pop.AddItem(menuItem), AnnotColorPalette_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "FreeTextFillColor"; menuItem.Header = "填充颜色"; menuItem.Tag = "FillColor"; pop.BindingEvent(pop.AddItem(menuItem), AnnotColorPalette_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "FreeTextFontFamily"; menuItem.Header = "字体"; pop.AddItem(menuItem); var family = TextFont.GetFamily(); foreach (var item in family) { RadioButton familyRdioBtn = new RadioButton(); familyRdioBtn.Style = App.Current.Resources["MenuRadioBtnStyle"] as Style; familyRdioBtn.Background = new SolidColorBrush(Colors.Transparent); familyRdioBtn.Name = item.ValueStr; familyRdioBtn.Tag = item.ValueStr; familyRdioBtn.GroupName = "FontFamily"; familyRdioBtn.Content = item.Content; pop.BindingEvent(pop.AddChild("FreeTextFontFamily", familyRdioBtn), FreeTextFontFamily_MenuCommand); } menuItem = new MenuItem(); menuItem.Name = "FreeTextAglin"; menuItem.Header = "文本对齐"; pop.AddItem(menuItem); var radioButton = new RadioButton(); radioButton.Style = App.Current.Resources["MenuRadioBtnStyle"] as Style; radioButton.Background = new SolidColorBrush(Colors.Transparent); radioButton.Name = "FreeTextAglinLeft"; radioButton.Tag = "Left"; radioButton.GroupName = "Aglin"; radioButton.Content = "左对齐"; pop.BindingEvent(pop.AddChild("FreeTextAglin", radioButton), FreeTextAglin_MenuCommand); radioButton = new RadioButton(); radioButton.Style = App.Current.Resources["MenuRadioBtnStyle"] as Style; radioButton.Background = new SolidColorBrush(Colors.Transparent); radioButton.Name = "FreeTextAglinCenter"; radioButton.Tag = "Center"; radioButton.GroupName = "Aglin"; radioButton.Content = "居中对齐"; pop.BindingEvent(pop.AddChild("FreeTextAglin", radioButton), FreeTextAglin_MenuCommand); radioButton = new RadioButton(); radioButton.Style = App.Current.Resources["MenuRadioBtnStyle"] as Style; radioButton.Background = new SolidColorBrush(Colors.Transparent); radioButton.Name = "FreeTextAglinRight"; radioButton.Tag = "Right"; radioButton.GroupName = "Aglin"; radioButton.Content = "右对齐"; pop.BindingEvent(pop.AddChild("FreeTextAglin", radioButton), FreeTextAglin_MenuCommand); radioButton = new RadioButton(); radioButton.Style = App.Current.Resources["MenuRadioBtnStyle"] as Style; radioButton.Background = new SolidColorBrush(Colors.Transparent); radioButton.Name = "FreeTextAglinJustify"; radioButton.Tag = "Justify"; radioButton.GroupName = "Aglin"; radioButton.Content = "两端对齐"; pop.BindingEvent(pop.AddChild("FreeTextAglin", radioButton), FreeTextAglin_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "FreeHandDefault"; menuItem.Header = "设置当前属性为默认值"; pop.BindingEvent(pop.AddItem(menuItem), AnnotDefaultValue_MenuCommand); FreeTextAnnotPopMenu = pop; } /// /// 便签 /// private void InitSelectStrickNoteAnnotMenu() { var popMenu = new ContextMenu(); PopMenu pop = new PopMenu(popMenu); var menuItem = new MenuItem(); menuItem.Name = "StrickNoteCopy"; menuItem.Header = "复制"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Copy); menuItem = new MenuItem(); menuItem.Name = "StrickNoteCut"; menuItem.Header = "剪切"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Cut); menuItem = new MenuItem(); menuItem.Name = "StrickNotePaste"; menuItem.Header = "粘贴"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Paste); menuItem = new MenuItem(); menuItem.Name = "StrickNoteDelete"; menuItem.Header = "删除"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Delete); pop.AddItem(GetSeparator()); menuItem = new MenuItem(); menuItem.Name = "StrickNoteColor"; menuItem.Header = "颜色"; pop.BindingEvent(pop.AddItem(menuItem), AnnotColorPalette_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "StrickNoteEdit"; menuItem.Header = "编辑便签"; pop.BindingEvent(pop.AddItem(menuItem), StrikeNoteEditStrike_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "StrickNoteDefault"; menuItem.Header = "设置当前属性为默认值"; pop.BindingEvent(pop.AddItem(menuItem), AnnotDefaultValue_MenuCommand); StrickNoteAnnotPopMenu = pop; } /// /// 形状 /// private void InitSelectShapeAnnotMenu() { var popMenu = new ContextMenu(); PopMenu pop = new PopMenu(popMenu); var menuItem = new MenuItem(); menuItem.Name = "ShapeCopy"; menuItem.Header = "复制"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Copy); menuItem = new MenuItem(); menuItem.Name = "ShapeCut"; menuItem.Header = "剪切"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Cut); menuItem = new MenuItem(); menuItem.Name = "ShapePaste"; menuItem.Header = "粘贴"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Paste); menuItem = new MenuItem(); menuItem.Name = "ShapeDelete"; menuItem.Header = "删除"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Delete); pop.AddItem(GetSeparator()); menuItem = new MenuItem(); menuItem.Name = "ShapeColor"; menuItem.Header = "边框颜色"; menuItem.Tag = "Color"; pop.BindingEvent(pop.AddItem(menuItem), AnnotColorPalette_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "ShapeFillColor"; menuItem.Header = "填充颜色"; menuItem.Tag = "FillColor"; pop.BindingEvent(pop.AddItem(menuItem), AnnotColorPalette_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "ShapeLineStyle"; menuItem.Header = "线段样式"; pop.AddItem(menuItem); RadioButton radioButton = new RadioButton(); radioButton.Style = App.Current.Resources["MenuRadioBtnStyle"] as Style; radioButton.Background = new SolidColorBrush(Colors.Transparent); radioButton.Name = "ShapeSolid"; radioButton.Content = "实线"; radioButton.GroupName = "LineStyle"; radioButton.Tag = "Solid"; pop.BindingEvent(pop.AddChild("ShapeLineStyle", radioButton), ShapeLineStyle_MenuCommand); radioButton = new RadioButton(); radioButton.Style = App.Current.Resources["MenuRadioBtnStyle"] as Style; radioButton.Background = new SolidColorBrush(Colors.Transparent); radioButton.Name = "ShapeDash"; radioButton.Content = "虚线"; radioButton.GroupName = "LineStyle"; radioButton.Tag = "Dash"; pop.BindingEvent(pop.AddChild("ShapeLineStyle", radioButton), ShapeLineStyle_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "ShapeDirect"; menuItem.Header = "线段方向"; pop.AddItem(menuItem); menuItem = new MenuItem(); menuItem.Name = "ShapeVer"; menuItem.Header = "垂直"; menuItem.Tag = "Ver"; pop.BindingEvent(pop.AddChild("ShapeDirect", menuItem), ShapeLineDirect_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "ShapeHor"; menuItem.Header = "横向"; menuItem.Tag = "Hor"; pop.BindingEvent(pop.AddChild("ShapeDirect", menuItem), ShapeLineDirect_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "ShapeNoteText"; menuItem.Header = "添加笔记"; pop.BindingEvent(pop.AddItem(menuItem), AnnotAddNoteText_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "ShapeDefault"; menuItem.Header = "设置当前属性为默认值"; pop.BindingEvent(pop.AddItem(menuItem), AnnotDefaultValue_MenuCommand); ShapeAnnotPopMenu = pop; } /// /// 链接 /// private void InitSelectLinkAnnotMenu() { var popMenu = new ContextMenu(); PopMenu pop = new PopMenu(popMenu); var menuItem = new MenuItem(); menuItem.Name = "LinkCopy"; menuItem.Header = "复制"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Copy); menuItem = new MenuItem(); menuItem.Name = "LinkCut"; menuItem.Header = "剪切"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Cut); menuItem = new MenuItem(); menuItem.Name = "LinkPaste"; menuItem.Header = "粘贴"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Paste); menuItem = new MenuItem(); menuItem.Name = "LinkDelete"; menuItem.Header = "删除"; pop.BindingEvent(pop.AddItem(menuItem), Link_MenuCommand); LinkAnnotPopMenu = pop; } /// /// 图章、签名 /// private void InitSelectStampAnnotMenu() { var popMenu = new ContextMenu(); PopMenu pop = new PopMenu(popMenu); var menuItem = new MenuItem(); menuItem.Name = "StampCopy"; menuItem.Header = "复制"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Copy); menuItem = new MenuItem(); menuItem.Name = "StampCut"; menuItem.Header = "剪切"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Cut); menuItem = new MenuItem(); menuItem.Name = "StampPaste"; menuItem.Header = "粘贴"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Paste); menuItem = new MenuItem(); menuItem.Name = "StampDelete"; menuItem.Header = "删除"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Delete); pop.AddItem(GetSeparator()); menuItem = new MenuItem(); menuItem.Name = "StampExportPicture"; menuItem.Header = "导出"; pop.AddItem(menuItem); //已跟设计确认,暂时不需要PNG格式 //menuItem = new MenuItem(); //menuItem.Name = "StampExportPNG"; //menuItem.Header = "PNG"; //menuItem.Tag = "PNG"; //pop.BindingEvent(pop.AddChild("StampExportPicture", menuItem), StampExportPicture_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "StampExportPNG"; menuItem.Header = "JPG"; menuItem.Tag = "JPG"; pop.BindingEvent(pop.AddChild("StampExportPicture", menuItem), StampExportPicture_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "StampExportPDF"; menuItem.Header = "PDF"; menuItem.Tag = "PDF"; pop.BindingEvent(pop.AddChild("StampExportPicture", menuItem), StampExportPicture_MenuCommand); menuItem = new MenuItem(); menuItem.Name = "StampAddNote"; menuItem.Header = "添加笔记"; pop.BindingEvent(pop.AddItem(menuItem), AnnotAddNoteText_MenuCommand); StampAnnotPopMenu = pop; } /// /// 多选注释 /// private void InitSelectMultiAnnotMenu() { var popMenu = new ContextMenu(); PopMenu pop = new PopMenu(popMenu); var menuItem = new MenuItem(); menuItem.Name = "MultiCopy"; menuItem.Header = "复制"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Copy); menuItem = new MenuItem(); menuItem.Name = "MultiCut"; menuItem.Header = "剪切"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Cut); menuItem = new MenuItem(); menuItem.Name = "MultiDelete"; menuItem.Header = "删除"; pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Delete); MultiAnnotPopMenu = pop; } #endregion 注释-右键菜单 } }