-
-
Notifications
You must be signed in to change notification settings - Fork 157
Open
Description
🐛 Bug Report
Whenever I set a custom MaterialConfiguration
, sizes are broken. The MaterialLabel font sizes are all default sizes, and when I open an alert, I get this exception:
Xamarin.Forms.Xaml.XamlParseException: Position 19:32. StaticResource not found for key Material.Dialog.Width
at Xamarin.Forms.Xaml.StaticResourceExtension.ProvideValue (System.IServiceProvider serviceProvider) [0x0008f] in D:\a\1\s\Xamarin.Forms.Xaml\MarkupExtensions\StaticResourceExtension.cs:27
at XF.Material.Forms.UI.Dialogs.MaterialAlertDialog.InitializeComponent () [0x00066] in Z:\Documents\OpenSource\XF-Material-Library\XF.Material\obj\Release\monoandroid10.0\UI\Dialogs\MaterialAlertDialog.xaml.g.cs:42
at XF.Material.Forms.UI.Dialogs.MaterialAlertDialog..ctor (XF.Material.Forms.UI.Dialogs.Configurations.MaterialAlertDialogConfiguration configuration) [0x00006] in Z:\Documents\OpenSource\XF-Material-Library\XF.Material\UI\Dialogs\MaterialAlertDialog.xaml.cs:32
at XF.Material.Forms.UI.Dialogs.MaterialAlertDialog..ctor (System.String message, System.String title, System.String action1Text, System.String action2Text, XF.Material.Forms.UI.Dialogs.Configurations.MaterialAlertDialogConfiguration configuration) [0x00000] in Z:\Documents\OpenSource\XF-Material-Library\XF.Material\UI\Dialogs\MaterialAlertDialog.xaml.cs:12
...
This is due to the "addDefaults" parameter to the Material class' constructor. It stops the flow from setting up size resources whenever a custom config is provided.
XF-Material-Library/XF.Material/Material.cs
Lines 128 to 140 in fef56fb
if (addDefaults) | |
{ | |
if (config == null) | |
{ | |
if (!_res.MergedDictionaries.Contains((defaultColors.Value))) | |
_res.MergedDictionaries.Add(defaultColors.Value); | |
if (!_res.MergedDictionaries.Contains((defaultTypos.Value))) | |
_res.MergedDictionaries.Add(defaultTypos.Value); | |
} | |
if (!_res.MergedDictionaries.Contains((defaultSizes.Value))) | |
_res.MergedDictionaries.Add(defaultSizes.Value); | |
} |
Expected behavior
XF.Material.Forms.Material.Init
should setup sizes correctly when custom configs are set.
Reproduction steps
Add this to app resources:
<resources:MaterialColorConfiguration x:Key="Material.Color"
Background="#EAEAEA"
Error="#B00020"
OnBackground="#000000"
OnError="#FFFFFF"
OnPrimary="#ffffff"
OnSecondary="#FFFFFF"
OnSurface="#000000"
Primary="{StaticResource PrimaryColor}"
PrimaryVariant="#ffdbcd"
Secondary="#4e6704"
SecondaryVariant="#cfee82"
Surface="#FFFFFF" />
<resources:MaterialConfiguration x:Key="Material.Configuration"
ColorConfiguration="{StaticResource Material.Color}" />
And init the package like this:
XF.Material.Forms.Material.Init(this, (MaterialConfiguration)Resources["Material.Configuration"]);
Configuration
Version: 1.8.0
Platform:
- 📱 iOS
- 🤖 Android
- 🏁 WPF
- 🌎 UWP
- 🍎 MacOS
- 📺 tvOS
- 🐒 Xamarin.Forms
Metadata
Metadata
Assignees
Labels
No labels