Inheritance: IPrintTaskOptionChangedEventArgs
        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();
                                       });
            }
        }
 private void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
 {
     if (args.OptionId == null)
     {
         // Invalidate the preview when switching printers.
         this.printDocument.InvalidatePreview();
     }
 }
        /// <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;
                    }
                }
            }
        }
Exemple #4
0
        // 当打印预览页中的自定义选项的选中项发生变化时
        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();
            });
        }