#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously async void OnPrintDetailOptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args) #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously { bool invalidatePreview = false; string optionId = args.OptionId as string; if (string.IsNullOrEmpty(optionId)) { return; } if (optionId == "Margins") { PrintCustomItemListOptionDetails marginsOption = (PrintCustomItemListOptionDetails)sender.Options["Margins"]; string marginsValue = marginsOption.Value.ToString(); switch (marginsValue) { case "WideMargins": ApplicationContentMarginTop = 0.2; ApplicationContentMarginLeft = 0.2; break; case "ModerateMargins": ApplicationContentMarginTop = 0.1; ApplicationContentMarginLeft = 0.1; break; case "NarrowMargins": ApplicationContentMarginTop = 0.05; ApplicationContentMarginLeft = 0.05; break; } if (marginsValue == "NarrowMargins") { marginsOption.WarningText = "Narrow margins may not be supported by some printers"; } else { marginsOption.WarningText = ""; } invalidatePreview = true; } if (invalidatePreview) { //await PrintPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => //{ Xamarin.Forms.Device.BeginInvokeOnMainThread(() => { printDocument.InvalidatePreview(); }); //}); } }
async void OnOptionDetailsOptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args) { if (args.OptionId == null) { return; } string optionId = args.OptionId.ToString(); string strValue = sender.Options[optionId].Value.ToString(); string errorText = String.Empty; double value = 0; switch (optionId) { case "idFontSize": if (!Double.TryParse(strValue, out value)) { errorText = "Value must be numeric"; } else if (value < 4 || value > 36) { errorText = "Value must be between 4 and 36"; } break; case "idLeftMargin": case "idTopMargin": case "idRightMargin": case "idBottomMargin": if (!Double.TryParse(strValue, out value)) { errorText = "Value must be numeric"; } else if (value < 0 || value > 2) { errorText = "Value must be between 0 and 2"; } break; } sender.Options[optionId].ErrorText = errorText; // If there's no error, then invalidate the preview if (String.IsNullOrEmpty(errorText)) { await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { printDocument.InvalidatePreview(); }); } }
async void OnOptionDetailsOptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args) { if (args.OptionId == null) { return; } string optionId = args.OptionId.ToString(); string strValue = sender.Options[optionId].Value.ToString(); string errorText = String.Empty; switch (optionId) { case "idPrintRange": switch (strValue) { case "idPrintAll": if (sender.DisplayedOptions.Contains("idCustomRangeEdit")) { sender.DisplayedOptions.Remove("idCustomRangeEdit"); } break; case "idPrintCustom": sender.DisplayedOptions.Add("idCustomRangeEdit"); break; } break; case "idCustomRangeEdit": // Check to see if CustomPageRange accepts this if (!new CustomPageRange(strValue, bookPages.Length).IsValid) { errorText = "Use the form 2-4, 7, 9-11"; } break; } sender.Options[optionId].ErrorText = errorText; // If no error, then invalidate the preview if (String.IsNullOrEmpty(errorText)) { await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { printDocument.InvalidatePreview(); }); } }
private void HandleCustomOptionsOptionChanged (PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args) { // Called in response to a setting being changed. // Determine if it was a custom setting and react accordingly var optionId = args.OptionId as String; if (LayoutOptionId.Equals(optionId) || PreviewTypeOptionId.Equals(optionId) || PageTitleOptionId.Equals(optionId)) { // Invalidate the preview content to force it to refresh. // This has to happen on the UI thread. _dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => _printDocument.InvalidatePreview()); } }
private async void printDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args) { string optionId = args.OptionId as string; if (string.IsNullOrEmpty(optionId)) { return; } if (optionId == "PageContent") { await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { printDoc.InvalidatePreview(); }); } }
/// <summary> /// This is the event handler for PrintManager option changed. /// </summary> /// <param name="sender">PrintTaskOptionDetails</param> /// <param name="args">PrintTaskOptionChangedEventArgs </param> private static async void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args) { bool invalidatePreview = false; string optionId = args.OptionId as string; if (string.IsNullOrEmpty(optionId)) { return; } if (optionId == "HeaderText") { PrintCustomTextOptionDetails headerText = (PrintCustomTextOptionDetails)sender.Options["HeaderText"]; _headerText = headerText.Value.ToString(); invalidatePreview = true; } if (optionId == "FooterText") { PrintCustomTextOptionDetails footerText = (PrintCustomTextOptionDetails)sender.Options["FooterText"]; _footerText = footerText.Value.ToString(); invalidatePreview = true; } if (optionId == "LeftMargin") { PrintCustomTextOptionDetails leftMargin = (PrintCustomTextOptionDetails)sender.Options["LeftMargin"]; var leftMarginValueConverterArg = double.TryParse(leftMargin.Value.ToString(), out var leftMarginValue); if (leftMarginValue > 50 || leftMarginValue < 0 || !leftMarginValueConverterArg) { leftMargin.ErrorText = _resourceLoader.GetString("Print_ErrorMsg_ValueOutOfRange"); return; } else if (Math.Round(leftMarginValue, 1) != leftMarginValue) { leftMargin.ErrorText = _resourceLoader.GetString("Print_ErrorMsg_DecimalOutOfRange"); return; } leftMargin.ErrorText = string.Empty; _applicationContentMarginLeft = (Math.Round(leftMarginValue / 100, 3)); invalidatePreview = true; } if (optionId == "TopMargin") { PrintCustomTextOptionDetails topMargin = (PrintCustomTextOptionDetails)sender.Options["TopMargin"]; var topMarginValueConverterArg = double.TryParse(topMargin.Value.ToString(), out var topMarginValue); if (topMarginValue > 50 || topMarginValue < 0 || !topMarginValueConverterArg) { topMargin.ErrorText = _resourceLoader.GetString("Print_ErrorMsg_ValueOutOfRange"); return; } else if (Math.Round(topMarginValue, 1) != topMarginValue) { topMargin.ErrorText = _resourceLoader.GetString("Print_ErrorMsg_DecimalOutOfRange"); return; } topMargin.ErrorText = string.Empty; _applicationContentMarginTop = (Math.Round(topMarginValue / 100, 3)); invalidatePreview = true; } if (invalidatePreview) { await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { _printDocument.InvalidatePreview(); }); } }