using ComPDFKitViewer; using ComPDFKitViewer.PdfViewer; using PDF_Office.EventAggregators; using PDF_Office.Model; using PDF_Office.ViewModels; using PDF_Office.ViewModels.Tools; using PDF_Office.Views.Dialog; using PDF_Office.Views.PropertyPanel.ViewModular; using PDF_Office.Views.Tools; using Prism.Events; using Prism.Regions; using System; using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; using System.Windows.Threading; namespace PDF_Office.Views { /// /// Interaction logic for ViewContent /// public partial class ViewContent : UserControl { private ViewContentViewModel viewModel = null; private string unicode = ""; public ViewContent() { InitializeComponent(); unicode = App.mainWindowViewModel.SelectedItem.Unicode; viewModel = (ViewContentViewModel)this.DataContext; viewModel.PropertyChanged += ViewModel_PropertyChanged; } private void ViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if(e.PropertyName == "OpenBOTA") { if(!viewModel.OpenBOTA) { //动态改变BOTA的最小宽度只能在这里设置,VM里绑定会有异常 BOTACloumn.MinWidth = 48; viewModel.BOTAWidth = new GridLength(48); BOTASplitter.Visibility = Visibility.Collapsed; } else { BOTACloumn.MinWidth = 260; BOTASplitter.Visibility = Visibility.Visible; } } } public ViewContent(IEventAggregator eventAggregator) : this() { eventAggregator.GetEvent().Subscribe(ChangeSplitModeUI, e => e.Unicode == unicode); } /// /// 根据Vm事件通知处理分屏布局的事件 /// /// private void ChangeSplitModeUI(SplitEventArgs e) { switch (e.Mode) { case EventAggregators.SplitMode.Horizontal: //水平分屏 上下 HorizontalSplitter.Visibility = Visibility.Visible; VerticalSplitter.Visibility = Visibility.Collapsed; RowRight.Height = new GridLength(1, GridUnitType.Star); ColumnBottom.Width = new GridLength(0); Grid.SetColumn(SplitPDFViewer, 0); Grid.SetRow(SplitPDFViewer, 2); break; case EventAggregators.SplitMode.Vertical: HorizontalSplitter.Visibility = Visibility.Collapsed; VerticalSplitter.Visibility = Visibility.Visible; RowRight.Height = new GridLength(0); ColumnBottom.Width = new GridLength(1, GridUnitType.Star); Grid.SetColumn(SplitPDFViewer, 2); Grid.SetRow(SplitPDFViewer, 0); break; case EventAggregators.SplitMode.Single: default: //退出分屏模式 HorizontalSplitter.Visibility = Visibility.Collapsed; VerticalSplitter.Visibility = Visibility.Collapsed; RowRight.Height = new GridLength(0, GridUnitType.Star); ColumnBottom.Width = new GridLength(0, GridUnitType.Star); break; } GridViewer.UpdateLayout(); } /// /// 退出阅读模式 /// /// /// private void UserControl_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) { if (Key.Escape == e.Key) { if (viewModel != null) { if (viewModel.PDFViewer.MouseMode != MouseModes.PanTool) { if (this.ContentToolsBar.Content is AnnotToolContent annotTool) { if (annotTool.BtnSelecttool.IsChecked == true) { AnnotToolContentViewModel model = (AnnotToolContentViewModel)annotTool.DataContext; if (model != null) { if (model.SnapshotEditMenuViewModel.SnapToolArgs != null) { model.SnapshotEditMenuViewModel.SnapToolArgs.ReSnapshot(); } } } } if (App.IsBookMode == true) { viewModel.UnReadModel(); } } else { viewModel.UnReadModel(); } } } } private void BtnFile_Initialized(object sender, EventArgs e) { BtnFile.ContextMenu = null; } private void BtnFile_Click(object sender, RoutedEventArgs e) { FileMenu.PlacementTarget = BtnFile; FileMenu.Placement = System.Windows.Controls.Primitives.PlacementMode.Bottom; FileMenu.IsOpen = true; } private void ContentControl_SizeChanged(object sender, SizeChangedEventArgs e) { } } }