async void printDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args) { // Listen for PageContent changes string optionId = args.OptionId as string; if (string.IsNullOrEmpty(optionId)) return; if (optionId == "PageContent") { await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { printDocument.InvalidatePreview(); }); } }
/// <summary> /// Removes the PageRange edit from the charm window /// </summary> /// <param name="printTaskOptionDetails">Details regarding PrintTaskOptions</param> private void RemovePageRangeEdit(PrintTaskOptionDetails printTaskOptionDetails) { if (pageRangeEditVisible) { string lastDisplayedOption = printTaskOptionDetails.DisplayedOptions.FirstOrDefault(p => p.Contains("PageRangeEdit")); if (!string.IsNullOrEmpty(lastDisplayedOption)) { printTaskOptionDetails.DisplayedOptions.Remove(lastDisplayedOption); } pageRangeEditVisible = false; } }
/// <summary> /// Option change event handler /// </summary> /// <param name="sender">PrintTaskOptionsDetails object</param> /// <param name="args">the event arguments containing the changed option id</param> async void printDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args) { if (args.OptionId == null) { return; } string optionId = args.OptionId.ToString(); // Handle change in Page Range Option if (optionId == "PageRange") { IPrintOptionDetails pageRange = sender.Options[optionId]; string pageRangeValue = pageRange.Value.ToString(); selectionMode = false; switch (pageRangeValue) { case "PrintRange": // Add PageRangeEdit custom option to the option list sender.DisplayedOptions.Add("PageRangeEdit"); pageRangeEditVisible = true; await scenarioPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { ShowContent(null); }); break; case "PrintSelection": await scenarioPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { Scenario4PageRange page = (Scenario4PageRange)scenarioPage; PageToPrint pageContent = (PageToPrint)page.PrintFrame.Content; ShowContent(pageContent.TextContentBlock.SelectedText); }); RemovePageRangeEdit(sender); break; default: await scenarioPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { ShowContent(null); }); RemovePageRangeEdit(sender); break; } Refresh(); } else if (optionId == "PageRangeEdit") { IPrintOptionDetails pageRange = sender.Options[optionId]; // Expected range format (p1,p2...)*, (p3-p9)* ... if (!Regex.IsMatch(pageRange.Value.ToString(), @"^\s*\d+\s*(\-\s*\d+\s*)?(\,\s*\d+\s*(\-\s*\d+\s*)?)*$")) { pageRange.ErrorText = "Invalid Page Range (eg: 1-3, 5)"; } else { pageRange.ErrorText = string.Empty; try { GetPagesInRange(pageRange.Value.ToString()); Refresh(); } catch (InvalidPageException ipex) { pageRange.ErrorText = ipex.Message; } } } }
private void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args) { if (args.OptionId == null) { // Invalidate the preview when switching printers. this.printDocument.InvalidatePreview(); } }
// 当打印预览页中的自定义选项的选中项发生变化时 private async void printDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args) { // 获取发生变化的自定义选项的 OptionId string optionId = args.OptionId as string; if (string.IsNullOrEmpty(optionId)) return; await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () => { MessageDialog messageDialog = new MessageDialog(optionId, "OptionId"); await messageDialog.ShowAsync(); // 获取打印预览页中的指定的自定义选项的选中项的 ItemId string itemId = sender.Options[optionId].Value as string; messageDialog = new MessageDialog(itemId, "ItemId"); await messageDialog.ShowAsync(); /* * 此处需要根据用户的选择,来修改打印的内容,这里就不写了 */ // 刷新预览页 printDocument.InvalidatePreview(); }); }
public PrintTaskOptionDetailsEvents(PrintTaskOptionDetails This) { this.This = This; }