Skip to content

Fix System.InvalidCastException in PageNavigationHost#21144

Merged
MrJul merged 2 commits into
masterfrom
page_host_cast_fix
Apr 10, 2026
Merged

Fix System.InvalidCastException in PageNavigationHost#21144
MrJul merged 2 commits into
masterfrom
page_host_cast_fix

Conversation

@emmauss

@emmauss emmauss commented Apr 10, 2026

Copy link
Copy Markdown
Contributor

What does the pull request do?

This PR fixes an System.InvalidCastException that occurs when using PageNavigationHost.

What is the current behavior?

App crashes with the following exception, using the ControlCatalog sample.

11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): android.runtime.JavaProxyThrowable: [System.InvalidCastException]: Specified cast is not valid.
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.AvaloniaPropertyChangedExtensions.GetOldValue(D:\ryujinx\Avalonia\src\Avalonia.Base\AvaloniaPropertyChangedExtensions.cs:16)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Controls.PageNavigationHost.ContentPresenter_PropertyChanged(D:\ryujinx\Avalonia\src\Avalonia.Controls\Page\PageNavigationHost.cs:135)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Unknown.Unknown(Unknown Source)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.AvaloniaObject.RaisePropertyChanged(D:\ryujinx\Avalonia\src\Avalonia.Base\AvaloniaObject.cs:803)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.AvaloniaObject.SetAndRaise(D:\ryujinx\Avalonia\src\Avalonia.Base\AvaloniaObject.cs:830)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Controls.Presenters.ContentPresenter.set_Child(D:\ryujinx\Avalonia\src\Avalonia.Controls\Presenters\ContentPresenter.cs:361)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Controls.Presenters.ContentPresenter.UpdateChild(D:\ryujinx\Avalonia\src\Avalonia.Controls\Presenters\ContentPresenter.cs:550)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Controls.Presenters.ContentPresenter.UpdateChild(D:\ryujinx\Avalonia\src\Avalonia.Controls\Presenters\ContentPresenter.cs:499)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Controls.Presenters.ContentPresenter.ApplyTemplate(D:\ryujinx\Avalonia\src\Avalonia.Controls\Presenters\ContentPresenter.cs:462)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Layout.Layoutable.MeasureCore(D:\ryujinx\Avalonia\src\Avalonia.Base\Layout\Layoutable.cs:559)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Layout.Layoutable.Measure(D:\ryujinx\Avalonia\src\Avalonia.Base\Layout\Layoutable.cs:387)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Layout.Layoutable.MeasureOverride(D:\ryujinx\Avalonia\src\Avalonia.Base\Layout\Layoutable.cs:647)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Layout.Layoutable.MeasureCore(D:\ryujinx\Avalonia\src\Avalonia.Base\Layout\Layoutable.cs:577)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Layout.Layoutable.Measure(D:\ryujinx\Avalonia\src\Avalonia.Base\Layout\Layoutable.cs:387)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Layout.LayoutHelper.MeasureChild(D:\ryujinx\Avalonia\src\Avalonia.Base\Layout\LayoutHelper.cs:48)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Controls.Presenters.ContentPresenter.MeasureOverride(D:\ryujinx\Avalonia\src\Avalonia.Controls\Presenters\ContentPresenter.cs:663)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Layout.Layoutable.MeasureCore(D:\ryujinx\Avalonia\src\Avalonia.Base\Layout\Layoutable.cs:577)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Layout.Layoutable.Measure(D:\ryujinx\Avalonia\src\Avalonia.Base\Layout\Layoutable.cs:387)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Layout.LayoutManager.Measure(D:\ryujinx\Avalonia\src\Avalonia.Base\Layout\LayoutManager.cs:312)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Layout.LayoutManager.ExecuteMeasurePass(D:\ryujinx\Avalonia\src\Avalonia.Base\Layout\LayoutManager.cs:260)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Layout.LayoutManager.InnerLayoutPass(D:\ryujinx\Avalonia\src\Avalonia.Base\Layout\LayoutManager.cs:241)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Layout.LayoutManager.ExecuteLayoutPass(D:\ryujinx\Avalonia\src\Avalonia.Base\Layout\LayoutManager.cs:152)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Controls.TopLevel.HandleResized(D:\ryujinx\Avalonia\src\Avalonia.Controls\TopLevel.cs:701)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Android.Platform.SkiaPlatform.TopLevelImpl.Resize(D:\ryujinx\Avalonia\src\Android\Avalonia.Android\Platform\SkiaPlatform\TopLevelImpl.cs:140)
11:45:56:395	04-10 11:46:01.422 E/AndroidRuntime( 4826): 	at Avalonia.Android.AvaloniaActivity+GlobalLayoutListener.OnGlobalLayout(D:\ryujinx\Avalonia\src\Android\Avalonia.Android\AvaloniaActivity.cs:253)

What is the updated/expected behavior with this PR?

How was the solution implemented (if it's not obvious)?

Checklist

Breaking changes

Obsoletions / Deprecations

Fixed issues

@emmauss emmauss requested review from MrJul and jsuarezruiz and removed request for MrJul April 10, 2026 11:51
@avaloniaui-bot

Copy link
Copy Markdown

You can test this PR using the following package version. 12.1.999-cibuild0064718-alpha. (feed url: https://nuget-feed-all.avaloniaui.net/v3/index.json) [PRBUILDID]

@MrJul MrJul added bug backport-candidate-12.0.x Consider this PR for backporting to 12.0 branch labels Apr 10, 2026
@avaloniaui-bot

Copy link
Copy Markdown

You can test this PR using the following package version. 12.1.999-cibuild0064720-alpha. (feed url: https://nuget-feed-all.avaloniaui.net/v3/index.json) [PRBUILDID]

@MrJul MrJul added this pull request to the merge queue Apr 10, 2026
Merged via the queue into master with commit 7953595 Apr 10, 2026
11 checks passed
@MrJul MrJul deleted the page_host_cast_fix branch April 10, 2026 14:19
MrJul pushed a commit to MrJul/Avalonia that referenced this pull request Apr 13, 2026
* Fix invalid cast exception in PageNavigationHost

* Added tests

---------

Co-authored-by: Javier Suárez Ruiz <javiersuarezruiz@hotmail.com>
@MrJul MrJul added backported-12.0.x and removed backport-candidate-12.0.x Consider this PR for backporting to 12.0 branch labels Apr 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants