Skip to content

Fix XamlParseException: StaticResource not found for key Gray400#468

Merged
StuartFerguson merged 5 commits intomainfrom
copilot/revamp-login-screen-layout
Mar 5, 2026
Merged

Fix XamlParseException: StaticResource not found for key Gray400#468
StuartFerguson merged 5 commits intomainfrom
copilot/revamp-login-screen-layout

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 4, 2026

  • Fix App.xaml to load Colors.xaml before LightTheme.xaml
  • Fix LightTheme.xaml MergedDictionaries path — use Colors.xaml (sibling path) instead of Resources/Styles/Colors.xaml (which produced a doubled-up path error)
Original prompt

This section details on the original issue you should resolve

<issue_title>Login Screen Revamp</issue_title>
<issue_description>Revamp the login screen to a more modern looking layout, use guidance from the parent issue for finer details</issue_description>

Comments on the Issue (you are @copilot in this section)


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI changed the title [WIP] Revamp login screen to modern layout Login Screen Revamp: Modern Gradient Layout Mar 4, 2026
@StuartFerguson
Copy link
Copy Markdown
Member

@copilot get this error running app locally

Exception thrown: 'Microsoft.Maui.Controls.Xaml.XamlParseException' in System.Private.CoreLib.dll
03-04 18:33:57.988 E/AndroidRuntime(19109): FATAL EXCEPTION: main
03-04 18:33:57.988 E/AndroidRuntime(19109): Process: com.transactionprocessor.mobile, PID: 19109
03-04 18:33:57.988 E/AndroidRuntime(19109): android.runtime.JavaProxyThrowable: [Microsoft.Maui.Controls.Xaml.XamlParseException]: Position 226:45. StaticResource not found for key Gray400
03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.ApplyPropertiesVisitor.ProvideValue(//src/Controls/src/Xaml/ApplyPropertiesVisitor.cs:287)
03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.ApplyPropertiesVisitor.Visit(/
/src/Controls/src/Xaml/ApplyPropertiesVisitor.cs:127)
03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.ElementNode.Accept(//src/Controls/src/Xaml/XamlNode.cs:128)
03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.ElementNode.Accept(/
/src/Controls/src/Xaml/XamlNode.cs:122)
03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.ElementNode.Accept(//src/Controls/src/Xaml/XamlNode.cs:124)
03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.FillResourceDictionariesVisitor.Visit(/
/src/Controls/src/Xaml/FillResourceDictionariesVisitor.cs:62)
03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.ElementNode.Accept(//src/Controls/src/Xaml/XamlNode.cs:117)
03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.RootNode.Accept(/
/src/Controls/src/Xaml/XamlNode.cs:179)
03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.XamlLoader.Visit(//src/Controls/src/Xaml/XamlLoader.cs:236)
03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.XamlLoader.Load(/
/src/Controls/src/Xaml/XamlLoader.cs:103)
03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.XamlLoader.Load(//src/Controls/src/Xaml/XamlLoader.cs:57)
03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.XamlLoader.Load(/
/src/Controls/src/Xaml/XamlLoader.cs:53)
03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.Extensions.LoadFromXaml(//src/Controls/src/Xaml/ViewExtensions.cs:42)
03-04 18:33:57.988 E/AndroidRuntime(19109): at TransactionProcessor.Mobile.Resources.Styles.LightTheme.InitializeComponent(C:\Projects\TransactionProcessing\TransactionMobile\TransactionProcessor.Mobile\obj\Debug
et10.0-android\Microsoft.Maui.Controls.SourceGen\Microsoft.Maui.Controls.SourceGen.XamlGenerator\Resources_Styles_LightTheme.xaml.sg.cs:20)
03-04 18:33:57.988 E/AndroidRuntime(19109): at TransactionProcessor.Mobile.Resources.Styles.LightTheme..ctor(C:\Projects\TransactionProcessing\TransactionMobile\TransactionProcessor.Mobile\Resources\Styles\LightTheme.xaml.cs:7)
03-04 18:33:57.988 E/AndroidRuntime(19109): at Unknown.Unknown(Unknown Source)
03-04 18:33:57.988 E/AndroidRuntime(19109): at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Constructor + 0x0(Unknown Source)
03-04 18:33:57.988 E/AndroidRuntime(19109): at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs + 0x24(Unknown Source)
03-04 18:33:57.988 E/AndroidRuntime(19109): at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw + 0x11(Unknown Source)
03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.ResourceDictionary+<>c__DisplayClass11_0.b__0(/
/src/Controls/src/Core/ResourceDictionary.cs:89)
03-04 18:33:57.988 E/AndroidRuntime(19109): at System.Runtime.CompilerServices.ConditionalWeakTable2[[System.Type, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Maui.Controls.ResourceDictionary, Microsoft.Maui.Controls, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].GetValue + 0x18(Unknown Source) 03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.ResourceDictionary.GetOrCreateInstance(/_/src/Controls/src/Core/ResourceDictionary.cs:81) 03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.ResourceDictionaryHelpers.SetAndLoadSource(/_/src/Controls/src/Xaml/ResourceDictionaryHelpers.cs:42) 03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.ResourceDictionaryHelpers.LoadFromSource(/_/src/Controls/src/Xaml/ResourceDictionaryHelpers.cs:35) 03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.ApplyPropertiesVisitor.SetPropertyValue(/_/src/Controls/src/Xaml/ApplyPropertiesVisitor.cs:357) 03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.ApplyPropertiesVisitor.Visit(/_/src/Controls/src/Xaml/ApplyPropertiesVisitor.cs:70) 03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.ValueNode.Accept(/_/src/Controls/src/Xaml/XamlNode.cs:55) 03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.FillResourceDictionariesVisitor.Visit(/_/src/Controls/src/Xaml/FillResourceDictionariesVisitor.cs:33) 03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.ValueNode.Accept(/_/src/Controls/src/Xaml/XamlNode.cs:55) 03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.ElementNode.Accept(/_/src/Controls/src/Xaml/XamlNode.cs:122) 03-04 18:33:57.988 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.RootNode.Accept(/_/src/Controls/src/Xaml/XamlNode.cs:177) 03-04 18:33:57.996 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.XamlLoader.Visit(/_/src/Controls/src/Xaml/XamlLoader.cs:236) 03-04 18:33:57.996 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.XamlLoader.Load(/_/src/Controls/src/Xaml/XamlLoader.cs:103) 03-04 18:33:57.996 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.XamlLoader.Load(/_/src/Controls/src/Xaml/XamlLoader.cs:57) 03-04 18:33:57.996 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.XamlLoader.Load(/_/src/Controls/src/Xaml/XamlLoader.cs:53) 03-04 18:33:57.996 E/AndroidRuntime(19109): at Microsoft.Maui.Controls.Xaml.Extensions.LoadFromXaml(/_/src/Controls/src/Xaml/ViewExtensions.cs:42) 03-04 18:33:57.996 E/AndroidRuntime(19109): at TransactionProcessor.Mobile.App.InitializeComponent(C:\Projects\TransactionProcessing\TransactionMobile\TransactionProcessor.Mobile\obj\Debug et10.0-android\Microsoft.Maui.Controls.SourceGen\Microsoft.Maui.Controls.SourceGen.XamlGenerator\App.xaml.sg.cs:20) 03-04 18:33:57.996 E/AndroidRuntime(19109): at TransactionProcessor.Mobile.App..ctor(C:\Projects\TransactionProcessing\TransactionMobile\TransactionProcessor.Mobile\App.xaml.cs:52) 03-04 18:33:57.996 E/AndroidRuntime(19109): at Unknown.Unknown(Unknown Source) 03-04 18:33:57.996 E/AndroidRuntime(19109): at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Constructor + 0x0(Unknown Source) 03-04 18:33:57.996 E/AndroidRuntime(19109): at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs + 0x24(Unknown Source) 03-04 18:33:57.996 E/AndroidRuntime(19109): at System.Reflection.RuntimeConstructorInfo.Invoke + 0x4a(Unknown Source) 03-04 18:33:57.996 E/AndroidRuntime(19109): at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor + 0x3f(Unknown Source) 03-04 18:33:57.996 E/AndroidRuntime(19109): at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2[[Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext, Microsoft.Extensions.DependencyInjection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60],[System.Object, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].VisitCallSiteMain + 0x3f(Unknown Source)
03-04 18:33:57.996 E/AndroidRuntime(19109): at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache + 0x3f(Unknown Source)
03-04 18:33:57.996 E/AndroidRuntime(19109): at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2[[Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext, Microsoft.Extensions.DependencyInjection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60],[System.Object, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].VisitCallSite + 0x4f(Unknown Source) 03-04 18:33:57.996 E/AndroidRuntime(19109): at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve + 0x14(Unknown Source) 03-04 18:33:57.996 E/AndroidRuntime(19109): at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor + 0x48(Unknown Source) 03-04 18:33:57.996 E/AndroidRuntime(19109): at System.Collections.Concurrent.ConcurrentDictionary2[[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier, Microsoft.Extensions.DependencyInjection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60],[Microsoft.Extensions.DependencyInjection.ServiceProvider+ServiceAccessor, Microsoft.Extensions.DependencyInjection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].GetOrAdd + 0x3f(Unknown Source)
03-04 18:33:57.996 E/AndroidRuntime(19109): at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService + 0xd(Unknown Source)
03-04 18:33:57.996 E/AndroidRuntime(19109): at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService + 0x0(Unknown Source)
03-04 18:33:57.996 E/AndroidRuntime(19109): at Microsoft.Maui.MauiContext+WrappedServiceProvider.GetService(//src/Core/src/MauiContext.cs:87)
03-04 18:33:57.996 E/AndroidRuntime(19109): at Microsoft.Maui.MauiContext+WrappedServiceProvider.GetService(/
/src/Core/src/MauiContext.cs:87)
03-04 18:33:57.996 E/AndroidRuntime(19109): at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService + 0x28(Unknown Source)
03-04 18:33:57.996 E/AndroidRuntime(19109): at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService + 0xb(Unknown Source)
03-04 18:33:57.996 E/AndroidRuntime(19109): at Microsoft.Maui.MauiApplication.OnCreate(/_/src/Core/src/Platform/Android/MauiApplication.cs:46)
03-04 18:33:57.996 E/AndroidRuntime(19109): at Android.App.Application.n_OnCreate + 0xe(Unknown Source)
03-04 18:33:57.996 E/AndroidRuntime(19109): at crc6488302ad6e9e4df1a.MauiApplication.n_onCreate(Native Method)
03-04 18:33:57.996 E/AndroidRuntime(19109): at crc6488302ad6e9e4df1a.MauiApplication.onCreate(MauiApplication.java:27)
03-04 18:33:57.996 E/AndroidRuntime(19109): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1381)
03-04 18:33:57.996 E/AndroidRuntime(19109): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7830)
03-04 18:33:57.996 E/AndroidRuntime(19109): at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
03-04 18:33:57.996 E/AndroidRuntime(19109): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2546)
03-04 18:33:57.996 E/AndroidRuntime(19109): at android.os.Handler.dispatchMessage(Handler.java:110)
03-04 18:33:57.996 E/AndroidRuntime(19109): at android.os.Looper.loopOnce(Looper.java:248)
03-04 18:33:57.996 E/AndroidRuntime(19109): at android.os.Looper.loop(Looper.java:338)
03-04 18:33:57.996 E/AndroidRuntime(19109): at android.app.ActivityThread.main(ActivityThread.java:9067)
03-04 18:33:57.996 E/AndroidRuntime(19109): at java.lang.reflect.Method.invoke(Native Method)
03-04 18:33:57.996 E/AndroidRuntime(19109): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
03-04 18:33:57.996 E/AndroidRuntime(19109): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)
An unhandled exception of type 'Android.Runtime.JavaProxyThrowable' occurred in Mono.Android.Runtime.dll

An error occurred in the vsdbg debug session of project 'C:\Projects\TransactionProcessing\TransactionMobile\TransactionProcessor.Mobile\TransactionProcessor.Mobile.csproj': An unhandled exception of type 'Android.Runtime.JavaProxyThrowable' occurred in Mono.Android.Runtime.dll
03-04 18:34:02.633 I/libc (19109): Requested dump for pid 19109 (rocessor.mobile)
The program 'TransactionProcessor.Mobile.dll' has exited with code 0 (0x0).
The vsdbg debug session for project 'C:\Projects\TransactionProcessing\TransactionMobile\TransactionProcessor.Mobile\TransactionProcessor.Mobile.csproj' has been stopped

@StuartFerguson
Copy link
Copy Markdown
Member

@copilot did you see my last comment?

Copilot stopped work on behalf of StuartFerguson due to an error March 4, 2026 19:24
… App.xaml merged dictionaries

Co-authored-by: StuartFerguson <[email protected]>
Copilot AI changed the title Login Screen Revamp: Modern Gradient Layout Fix XamlParseException: StaticResource not found for key Gray400 Mar 4, 2026
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Mar 4, 2026

@copilot did you see my last comment?

Yes, sorry about that — the previous fix was incomplete. The real root cause is that LightTheme.xaml has x:Class (a code-behind), so when MAUI loads it as a merged dictionary, it calls InitializeComponent() which parses LightTheme.xaml in isolation — at that point the parent App.xaml's merged Colors.xaml is not in scope, causing {StaticResource Gray400} to fail.

Fixed in commit fb0532f by adding Colors.xaml to LightTheme.xaml's own MergedDictionaries:

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Resources/Styles/Colors.xaml" />
</ResourceDictionary.MergedDictionaries>

This makes LightTheme.xaml self-contained — it can always resolve Gray400 (and any other key from Colors.xaml) regardless of loading order.

@StuartFerguson
Copy link
Copy Markdown
Member

@copilot now get this error
Resource 'Resources/Styles/Resources/Styles/Colors.xaml' not found.

Copy link
Copy Markdown
Contributor Author

Copilot AI commented Mar 4, 2026

@copilot now get this error
Resource 'Resources/Styles/Resources/Styles/Colors.xaml' not found.

Fixed in commit abbbf5d. The path in LightTheme.xaml was Resources/Styles/Colors.xaml but since LightTheme.xaml lives inside Resources/Styles/, MAUI was resolving it as Resources/Styles/Resources/Styles/Colors.xaml. Changed it to the sibling-relative path Colors.xaml.

@StuartFerguson StuartFerguson marked this pull request as ready for review March 5, 2026 08:29
@StuartFerguson StuartFerguson merged commit 51a049f into main Mar 5, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Login Screen Revamp

2 participants