private async void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args) { var invalidatePreview = false; switch (args.OptionId) { case "LayoutOption": switch (sender.Options["LayoutOption"].Value as string) { case "Center": this.printLayout = PrintPanel.LayoutOption.Centered; break; case "AlignLeftOrTop": this.printLayout = PrintPanel.LayoutOption.AlignLeftOrTop; break; case "AlignRightOrBottom": this.printLayout = PrintPanel.LayoutOption.AlignRightOrBottom; break; } invalidatePreview = true; break; } if (invalidatePreview) { await this.caller.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { this.printDocument.InvalidatePreview(); }); } }
private void PrintTaskRequested(PrintManager sender, PrintTaskRequestedEventArgs e) { PrintTask printTask = null; printTask = e.Request.CreatePrintTask(this.title, sourceRequested => { sourceRequested.SetSource(this.printDocumentSource); }); var printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(printTask.Options); var displayedOptions = printDetailedOptions.DisplayedOptions; var alignOption = printDetailedOptions.CreateItemListOption("LayoutOption", "Layout Option"); alignOption.AddItem("Center", "Center"); alignOption.AddItem("AlignLeftOrTop", "Align to the Left or to the Top"); alignOption.AddItem("AlignRightOrBottom", "Align to the right or to the bottom"); this.printLayout = PrintPanel.LayoutOption.Centered; displayedOptions.Clear(); displayedOptions.Add(StandardPrintTaskOptions.Copies); displayedOptions.Add("LayoutOption"); displayedOptions.Add(StandardPrintTaskOptions.MediaSize); displayedOptions.Add(StandardPrintTaskOptions.Orientation); displayedOptions.Add(StandardPrintTaskOptions.ColorMode); displayedOptions.Add(StandardPrintTaskOptions.PrintQuality); printDetailedOptions.OptionChanged += this.PrintDetailedOptions_OptionChanged; }