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)
{
}
}
}