PLEASE READ UNTIL THE END.
I tried using SfPopupLayout control (17.2.0.51) in a Xamarin UWP application and it threw an exception.
1. To be sure it wasn't a problem in my code I created a BARE PAGE with only the SfPopupLayout and the
exception was still happening. It was a default SfPopupLayout. No properties or anything was changed.
2. I tried both using it as a root view and as a popup on the go. Both failed.
3. So, I went on to figure out were in the SfPopupLayout's IL the problem was occurring.
4. It turns out that the SfPopupLayout is trying to use System.Convert.ToByte() with a value of 20400. That's not a byte!
5. The value of 20400 comes from a calculation using PopupView.PopupStyle.OverlayOpacity. I did not set it to any
value in My code! So, it comes from the SfPopupLayout's code.
6. The problem is the PopupView.PopupStyle.OverlayOpacity has a value of 80!
7. The exception occurs because of the code in the SfPopupLayout ApplyBackgroundColor method.
The code is this, PopupView.PopupStyle.OverlayOpacity * (double) byte.MaxValue
Which translates to this, 80 * 255 = 20400.
8. It seems that the only valid value for PopupView.PopupStyle.OverlayOpacity would be 0 or 1
9. BELOW LISTED IS THE EXCEPTION AND A WORK-AROUND I CREATED TO PROVE THIS PROBLEM.
THE WORK-AROUND MAKES THE EXCEPTION NOT OCCUR.
NOTE THAT THE WORKAROUND IS FOR XAML. I COULDN'T GET A WORK-AROUND TO WORK AT
ALL FOR A POPUP ON THE GO.
10. I hope I've given enough information to re-create. If I've gotten something wrong or I'm mistaken please
let me know.
Thanks
System.OverflowException
HResult=0x80131516
Message=Value was either too large or too small for an unsigned byte.
Source=System.Private.CoreLib
StackTrace:
at System.Convert.ThrowByteOverflowException() in E:\A\_work\414\s\src\mscorlib\shared\System\Convert.cs:line 383
at System.Convert.ToByte(Int32 value) in E:\A\_work\414\s\src\mscorlib\shared\System\Convert.cs:line 808
at System.Convert.ToByte(Double value) in E:\A\_work\414\s\src\mscorlib\shared\System\Convert.cs:line 839
at Syncfusion.XForms.UWP.PopupLayout.SfPopupLayout.ApplyBackgroundColor(SolidColorBrush color)
at Syncfusion.XForms.UWP.PopupLayout.SfPopupLayout.SetContainerBackgroundColor() in C:\Users\Kcarter\AppData\Local\JetBrains\Shared\vAny\DecompilerCache\decompiler\E5AD1806-4E87-4550-9AE5-8BB600C7AE0D\15\72836b0e\SfPopupLayout.cs:line 530
at Syncfusion.XForms.UWP.PopupLayout.SfPopupLayout.DisplayPopup() in C:\Users\Kcarter\AppData\Local\JetBrains\Shared\vAny\DecompilerCache\decompiler\E5AD1806-4E87-4550-9AE5-8BB600C7AE0D\15\72836b0e\SfPopupLayout.cs:line 471
at Syncfusion.XForms.UWP.PopupLayout.SfPopupLayout.set_IsOpen(Boolean value) in C:\Users\Kcarter\AppData\Local\JetBrains\Shared\vAny\DecompilerCache\decompiler\E5AD1806-4E87-4550-9AE5-8BB600C7AE0D\15\72836b0e\SfPopupLayout.cs:line 154
at Syncfusion.XForms.UWP.PopupLayout.SfPopupLayout.OpenOrClosePopup(Boolean open) in C:\Users\Kcarter\AppData\Local\JetBrains\Shared\vAny\DecompilerCache\decompiler\E5AD1806-4E87-4550-9AE5-8BB600C7AE0D\15\72836b0e\SfPopupLayout.cs:line 381
at Syncfusion.XForms.UWP.PopupLayout.SfPopupLayout.Show() in C:\Users\Kcarter\AppData\Local\JetBrains\Shared\vAny\DecompilerCache\decompiler\E5AD1806-4E87-4550-9AE5-8BB600C7AE0D\15\72836b0e\SfPopupLayout.cs:line 245
at Syncfusion.XForms.UWP.PopupLayout.PopupLayoutDependencyService.Show(Object nativeObject, SfPopupLayout formsPopup) in C:\Users\Kcarter\AppData\Local\JetBrains\Shared\vAny\DecompilerCache\decompiler\E5AD1806-4E87-4550-9AE5-8BB600C7AE0D\5d\7462185a\PopupLayoutDependencyService.cs:line 57
at Syncfusion.XForms.PopupLayout.SfPopupLayout.Show(Boolean isFullScreen)
at Syncfusion.XForms.PopupLayout.SfPopupLayout.OnIsOpenChanged(BindableObject bindable, Object oldValue, Object newValue)
at Xamarin.Forms.BindableObject.SetValueActual(BindableProperty property, BindablePropertyContext context, Object value, Boolean currentlyApplying, SetValueFlags attributes, Boolean silent)
at Xamarin.Forms.BindableObject.SetValueCore(BindableProperty property, Object value, SetValueFlags attributes, SetValuePrivateFlags privateAttributes)
at Xamarin.Forms.BindableObject.SetValue(BindableProperty property, Object value, Boolean fromStyle, Boolean checkAccess)
at Xamarin.Forms.BindableObject.SetValue(BindableProperty property, Object value)
at Syncfusion.XForms.PopupLayout.SfPopupLayout.set_IsOpen(Boolean value)
at CWMatthews.StarterTemplate.CrossPlatformNetStandard.Views.Original.EquipmentManager.EquipmentManagerMainPageDetailView.Button_Clicked(Object sender, EventArgs e) in D:\Documents\Starter Template\C. W. Matthews Starter Template .Net Standard Views - Standalone\Views Sub Apps\Equipment Manager\EquipmentManagerMainPageDetailView.xaml.cs:line 584
at Xamarin.Forms.Button.Xamarin.Forms.Internals.IButtonElement.PropagateUpClicked()
at Xamarin.Forms.ButtonElement.ElementClicked(VisualElement visualElement, IButtonElement ButtonElementManager)
at Xamarin.Forms.Button.SendClicked()
at Xamarin.Forms.Platform.UWP.ButtonRenderer.OnButtonClick(Object sender, RoutedEventArgs e)