using PDF_Office.ViewModels.Dialog.HomePageToolsDialogs.HomePagePrinter; using Prism.Ioc; using Prism.Regions; using System.Text.RegularExpressions; using System.Windows; using System.Windows.Controls; using System.Windows.Forms; using System.Windows.Input; using UserControl = System.Windows.Controls.UserControl; namespace PDF_Office.Views.Dialog.HomePageToolsDialogs.HomePagePrinter { /// /// Interaction logic for PrinterDialog /// public partial class HomePagePrinterDialog : UserControl { private IContainerProvider containerProvider; private Regex regexForPageIndex = new Regex(@"^[0-9]\d*$"); private Regex regexForZeroIndex = new Regex(@"^[0]\d*$"); private int _currentPreviewPageIndex; public int CurrentPreviewPageIndex { get { return _currentPreviewPageIndex; } set { _currentPreviewPageIndex = value; } } public HomePagePrinterDialog(IContainerProvider containerProvider) { InitializeComponent(); this.containerProvider = containerProvider; var regionManager = containerProvider.Resolve(); RegionManager.SetRegionManager(this, regionManager); RegionManager.UpdateRegions(); } private void PageRangeComboBox_Loaded(object sender, RoutedEventArgs e) { PageRangeComboBox.CurrentPage = true; if (PageRangeComboBox.CurrentPage) { ComboBoxItem comboBoxItem = new ComboBoxItem(); comboBoxItem.Content = "当前页面"; PageRangeComboBox.writableComboBox.Items.Insert(1, comboBoxItem); } PageRangeComboBox.writableComboBox.SelectionChanged += WritableComboBox_SelectionChanged; } private void WritableComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { ((HomePagePrinterDialogViewModel)this.DataContext).SetPageRangeCommand.Execute(); this.CurrentPageIndexTextBox.Text = "1"; CurrentPreviewPageIndex= 0; } private void PrintOrientationComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { ((HomePagePrinterDialogViewModel)this.DataContext).SetPrintOrientationCommand.Execute(); } private void CurrentPageIndexTextBox_PreviewTextInput(object sender, System.Windows.Input.TextCompositionEventArgs e) { Regex re = new Regex("[^0-9]+"); e.Handled = re.IsMatch(e.Text); } private void CurrentPageIndexTextBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) { if (((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber != null) { if (e.Key == System.Windows.Input.Key.Enter && this.CurrentPageIndexTextBox.Text != (CurrentPreviewPageIndex + 1).ToString()) { var CurrentPageTextBox = sender as System.Windows.Controls.TextBox; //非子集、空集、边界值 if (!regexForPageIndex.IsMatch(CurrentPageTextBox.Text) || CurrentPageTextBox.Text == "" || regexForZeroIndex.IsMatch(CurrentPageTextBox.Text)) { CurrentPreviewPageIndex = 1; CurrentPageTextBox.Text = CurrentPreviewPageIndex.ToString(); } if (int.Parse(CurrentPageTextBox.Text) > int.Parse(((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber)) { CurrentPreviewPageIndex = int.Parse(((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber); CurrentPageTextBox.Text = ((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber; } CurrentPreviewPageIndex = int.Parse(CurrentPageIndexTextBox.Text); CurrentPreviewPageIndex = CurrentPreviewPageIndex - 1; ((HomePagePrinterDialogViewModel)this.DataContext).CurrentListIndexString = (CurrentPreviewPageIndex).ToString(); ((HomePagePrinterDialogViewModel)this.DataContext).GetPagePreviewWhenIndexChangedCommand.Execute(); } } } private void PrePageBtn_Click(object sender, RoutedEventArgs e) { CurrentPreviewPageIndex--; this.CurrentPageIndexTextBox.Text = (CurrentPreviewPageIndex + 1).ToString(); ((HomePagePrinterDialogViewModel)this.DataContext).CurrentListIndexString = CurrentPreviewPageIndex.ToString(); ((HomePagePrinterDialogViewModel)this.DataContext).GetPagePreviewWhenIndexChangedCommand.Execute(); } private void NextPageBtn_Click(object sender, RoutedEventArgs e) { CurrentPreviewPageIndex++; this.CurrentPageIndexTextBox.Text = (CurrentPreviewPageIndex + 1).ToString(); ((HomePagePrinterDialogViewModel)this.DataContext).CurrentListIndexString = CurrentPreviewPageIndex.ToString(); ((HomePagePrinterDialogViewModel)this.DataContext).GetPagePreviewWhenIndexChangedCommand.Execute(); } //private void CurrentPageIndexTextBox_TextChanged(object sender, TextChangedEventArgs e) //{ // if (((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber != null) // { // if (this.CurrentPageIndexTextBox.Text != "") // { // var CurrentPageTextBox = sender as System.Windows.Controls.TextBox; // if (regexForPageIndex.IsMatch(CurrentPageTextBox.Text)) // { // if (int.Parse(((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber) > 2) // { // if (int.Parse(CurrentPageTextBox.Text) > 1 && int.Parse(CurrentPageTextBox.Text) < int.Parse(((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber)) // { // PrePageBtn.IsEnabled = true; // NextPageBtn.IsEnabled = true; // } // else if (int.Parse(CurrentPageTextBox.Text) <= 1 && int.Parse(CurrentPageTextBox.Text) < int.Parse(((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber)) // { // PrePageBtn.IsEnabled = false; // NextPageBtn.IsEnabled = true; // } // else if (int.Parse(CurrentPageTextBox.Text) > 1 && int.Parse(CurrentPageTextBox.Text) >= int.Parse(((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber)) // { // PrePageBtn.IsEnabled = true; // NextPageBtn.IsEnabled = false; // } // } // else // { // PrePageBtn.IsEnabled = false; // NextPageBtn.IsEnabled = false; // } // } // else // { // this.PrePageBtn.IsEnabled = false; // this.NextPageBtn.IsEnabled = false; // } // } // else // { // this.PrePageBtn.IsEnabled = false; // this.NextPageBtn.IsEnabled = false; // } // } //} private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { ((HomePagePrinterDialogViewModel)this.DataContext).SetPrintContentCommand.Execute(); } private void ReversePageCheckBox_Click(object sender, RoutedEventArgs e) { this.CurrentPageIndexTextBox.Text = "1"; CurrentPreviewPageIndex = 0; } } }