Closed laolarou726 closed 1 year ago
I found that once I change the template of TransitioningContentControl, everything will be fine. Is that a bug?
Changes I did:
<Style Selector="TransitioningContentControl">
<Setter Property="Template">
<ControlTemplate>
<ContentPresenter Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="{TemplateBinding CornerRadius}"
ContentTemplate="{TemplateBinding ContentTemplate}"
Content="{TemplateBinding Content}" /* Original should be binding to CurrentContent */
Padding="{TemplateBinding Padding}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" />
</ControlTemplate>
</Setter>
</Style>
Also, if I set the Content to be {TemplateBinding CurrentContent}. When I navigating to some pages, the exception will throw:
Avalonia.Base.dll!Avalonia.Media.FontFamily.FontFamily(System.Uri baseUri, string name)
Avalonia.Skia.dll!Avalonia.Skia.FontManagerImpl.TryMatchCharacter(int codepoint, Avalonia.Media.FontStyle fontStyle, Avalonia.Media.FontWeight fontWeight, Avalonia.Media.FontStretch fontStretch, Avalonia.Media.FontFamily fontFamily, System.Globalization.CultureInfo culture, out Avalonia.Media.Typeface fontKey)
Avalonia.Base.dll!Avalonia.Media.FontManager.TryMatchCharacter(int codepoint, Avalonia.Media.FontStyle fontStyle, Avalonia.Media.FontWeight fontWeight, Avalonia.Media.FontStretch fontStretch, Avalonia.Media.FontFamily fontFamily, System.Globalization.CultureInfo culture, out Avalonia.Media.Typeface typeface)
Avalonia.Base.dll!Avalonia.Media.TextFormatting.TextCharacters.CreateShapeableRun(Avalonia.Utilities.ReadOnlySlice<char> text, Avalonia.Media.TextFormatting.TextRunProperties defaultProperties, sbyte biDiLevel, ref Avalonia.Media.TextFormatting.TextRunProperties previousProperties)
Avalonia.Base.dll!Avalonia.Media.TextFormatting.TextCharacters.GetShapeableCharacters(Avalonia.Utilities.ReadOnlySlice<char> runText, sbyte biDiLevel, ref Avalonia.Media.TextFormatting.TextRunProperties previousProperties)
Avalonia.Base.dll!Avalonia.Media.TextFormatting.TextFormatterImpl.CoalesceLevels(System.Collections.Generic.IReadOnlyList<Avalonia.Media.TextFormatting.TextRun> textCharacters, Avalonia.Utilities.ArraySlice<sbyte> levels)
Avalonia.Base.dll!Avalonia.Media.TextFormatting.TextFormatterImpl.ShapeTextRuns(System.Collections.Generic.List<Avalonia.Media.TextFormatting.TextRun> textRuns, Avalonia.Media.TextFormatting.TextParagraphProperties paragraphProperties, out Avalonia.Media.FlowDirection resolvedFlowDirection)
Avalonia.Base.dll!Avalonia.Media.TextFormatting.TextFormatterImpl.FormatLine(Avalonia.Media.TextFormatting.ITextSource textSource, int firstTextSourceIndex, double paragraphWidth, Avalonia.Media.TextFormatting.TextParagraphProperties paragraphProperties, Avalonia.Media.TextFormatting.TextLineBreak previousLineBreak)
Avalonia.Base.dll!Avalonia.Media.TextFormatting.TextLayout.CreateTextLines()
Avalonia.Controls.dll!Avalonia.Controls.TextBlock.CreateTextLayout(string text)
Avalonia.Controls.dll!Avalonia.Controls.TextBlock.Render(Avalonia.Media.DrawingContext context)
Avalonia.Base.dll!Avalonia.Rendering.Composition.CompositingRenderer.UpdateCore()
Avalonia.Base.dll!Avalonia.Rendering.Composition.CompositingRenderer.Update(System.Threading.Tasks.Task batchCompletion)
Avalonia.Base.dll!Avalonia.Rendering.Composition.Compositor.Commit()
Avalonia.Base.dll!Avalonia.Rendering.Composition.CompositingRenderer.Dispose()
Avalonia.Controls.dll!Avalonia.Controls.TopLevel.HandleClosed()
Avalonia.Controls.dll!Avalonia.Controls.WindowBase.HandleClosed()
Avalonia.Win32.dll!Avalonia.Win32.WindowImpl.AppWndProc(System.IntPtr hWnd, uint msg, System.IntPtr wParam, System.IntPtr lParam)
Avalonia.Win32.dll!Avalonia.Win32.WindowImpl.WndProc(System.IntPtr hWnd, uint msg, System.IntPtr wParam, System.IntPtr lParam)
[本机到托管的转换]
[托管到本机的转换]
Avalonia.Win32.dll!Avalonia.Win32.WindowImpl.Dispose()
Avalonia.Controls.dll!Avalonia.Controls.Primitives.PopupRoot.Dispose()
System.Reactive.dll!System.Reactive.Disposables.AnonymousDisposable<(Avalonia.Controls.Primitives.IPopupHost, System.Reactive.Disposables.CompositeDisposable)>.Dispose()
Avalonia.Controls.dll!Avalonia.Controls.Primitives.Popup.CloseCore()
Avalonia.Controls.dll!Avalonia.Controls.ComboBox.OnPointerReleased(Avalonia.Input.PointerReleasedEventArgs e)
System.Reactive.dll!System.Reactive.Subjects.Subject<(object, Avalonia.Interactivity.RoutedEventArgs)>.OnNext((object, Avalonia.Interactivity.RoutedEventArgs) value)
Avalonia.Base.dll!Avalonia.Interactivity.EventRoute.RaiseEventImpl(Avalonia.Interactivity.RoutedEventArgs e)
Avalonia.Base.dll!Avalonia.Interactivity.EventRoute.RaiseEvent(Avalonia.Interactivity.IInteractive source, Avalonia.Interactivity.RoutedEventArgs e)
Avalonia.Base.dll!Avalonia.Interactivity.Interactive.RaiseEvent(Avalonia.Interactivity.RoutedEventArgs e)
Avalonia.Base.dll!Avalonia.Input.MouseDevice.MouseUp(Avalonia.Input.IMouseDevice device, ulong timestamp, Avalonia.Input.IInputRoot root, Avalonia.Point p, Avalonia.Input.PointerPointProperties props, Avalonia.Input.KeyModifiers inputModifiers, Avalonia.Input.IInputElement hitTest)
Avalonia.Base.dll!Avalonia.Input.MouseDevice.ProcessRawEvent(Avalonia.Input.Raw.RawPointerEventArgs e)
Avalonia.Base.dll!Avalonia.Input.InputManager.ProcessInput(Avalonia.Input.Raw.RawInputEventArgs e)
Avalonia.Controls.dll!Avalonia.Controls.TopLevel.HandleInput(Avalonia.Input.Raw.RawInputEventArgs e)
Avalonia.Win32.dll!Avalonia.Win32.WindowImpl.AppWndProc(System.IntPtr hWnd, uint msg, System.IntPtr wParam, System.IntPtr lParam)
Avalonia.Win32.dll!Avalonia.Win32.WindowImpl.WndProc(System.IntPtr hWnd, uint msg, System.IntPtr wParam, System.IntPtr lParam)
[本机到托管的转换]
[托管到本机的转换]
Avalonia.Win32.dll!Avalonia.Win32.Win32Platform.RunLoop(System.Threading.CancellationToken cancellationToken)
Avalonia.Base.dll!Avalonia.Threading.Dispatcher.MainLoop(System.Threading.CancellationToken cancellationToken)
Avalonia.Controls.dll!Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetime.Start(string[] args)
> LauncherX.Avalonia.dll!LauncherX.Avalonia.Program.Main(string[] args) Line 15 C#
Hi @laolarou726
your stack trace seems to be missing some important lines at the top. can you please double-check this? Also it might be helpful if you can share a sample App which shows your issue. So we can better debug it.
Happy coding Tim
@timunie hmmm, I'm pretty sure this is the top of the stacktrace:
I'll try to make a sample APP tomorrow. But I'm not sure if it is possible because I don't know what's happened. Sorry about that.
can you inspect what name is? The issue tells us it is null or empty. I think probably you are using a custom font which is causing the issue. @Gillibald may know more about it.
@timunie I failed to create a repro for this issue. I'm using a style to override the FontFamily for most of the controls:
@timunie @Gillibald I just created a repo to show the exception: https://github.com/laolarou726/FontExceptionTest
See the Readme file, if you uncomment the code in MDLIconStyle.axaml, the exception will appear.
I found that once I change the template of TransitioningContentControl, everything will be fine. Is that a bug?
Changes I did:
<Style Selector="TransitioningContentControl"> <Setter Property="Template"> <ControlTemplate> <ContentPresenter Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="{TemplateBinding CornerRadius}" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" /* Original should be binding to CurrentContent */ Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" /> </ControlTemplate> </Setter> </Style>
@timunie Is that a possible bug for the AvaloniaUI or ReactiveUI? I'm keep getting blank pages if I set the TemplateBinding to "CurrentCotent".
I found that once I change the template of TransitioningContentControl, everything will be fine. Is that a bug? Changes I did:
<Style Selector="TransitioningContentControl"> <Setter Property="Template"> <ControlTemplate> <ContentPresenter Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="{TemplateBinding CornerRadius}" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" /* Original should be binding to CurrentContent */ Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" /> </ControlTemplate> </Setter> </Style>
@timunie Is that a possible bug for the AvaloniaUI or ReactiveUI? I keep getting blank pages if I set the TemplateBinding to "CurrentCotent".
@timunie I noticed that the content has been successfully set after the navigation (as you can see in the Logical Tree). However, the real view failed to show those elements up. What I got is a completely empty page.
Once I change the style binding to "Content" instead of "CurrentContent". Everything will be fine except for the page transitions.
Once I change the style binding to "Content" instead of "CurrentContent". Everything will be fine except for the page transitions.
It seems all the sub-elements loss their styles after the navigation is finished.
@kekekeks can this issue be related to the new renderer? If so, you may want to check the transitioning content control while sorting out the renderer bugs present.
@kekekeks can this issue be related to the new renderer? If so, you may want to check the transitioning content control while sorting out the renderer bugs present.
Which part of the transitioning content control I need to look at? The styling or the source?
Could you create a small repro for the navigating issue?
Could you create a small repro for the navigating issue?
I'll try to create a small repro for this issue. But I don't know if it is possible, because I don't know why this happens. I tried the official demo on the Avalonia's website, everything is fine.
Could you create a small repro for the navigating issue?
@emmauss @timunie I successfully repro the issue, here is the repo: https://github.com/laolarou726/NavigationBug
@timunie Any update on this issue? Is that related to Avalonia's new render?
@laolarou726 I've checked out your sample today and tried to find the root cause. But honestly I have no idea what's going on. Looks like every second time the view is shown correctly.
@laolarou726 I've checked out your sample today and tried to find the root cause. But honestly I have no idea what's going on. Looks like every second time the view is shown correctly.
Thanks. It's really strange, every time you navigate back to the first page you get nothing, but if you try again it will work.
I am also affected by this. Can I ask for an rough estimate when the fix will be published?
@Avabin hopefully fixed by #9642 though I've not had time to check yet. If anyone wants to run the repro on that PR and check in the meantime, that would be appreciated!
@Avabin hopefully fixed by #9642 though I've not had time to check yet. If anyone wants to run the repro on that PR and check in the meantime, that would be appreciated!
I just ran a test with Avalonia Version 11.0.999-cibuild0027216-beta. The problem seems to be more serious. Now the repro project can only successfully shows first two pages. After that, all the pages will not show up.
@timunie @grokys I just did a test using the latest Avalonia 11.0 nightly build. The issue still exists and has become weirder. Now TransitioningContentControl can only show the first content. If I do further navigation. The control will be completely blank. Could you please reopen this issue?
@laolarou726 can you test with https://github.com/AvaloniaUI/Avalonia/pull/9803 build?
@laolarou726 can you test with #9803 build?
It seems Nuget Nightly Source didn't push this version yet. I can not install this version using Avalonia Nightly Build Source.
@laolarou726 should be this one:
You can test this PR using the following package version. 11.0.999-cibuild0027927-beta. (feed url: https://pkgs.dev.azure.com/AvaloniaUI/AvaloniaUI/_packaging/avalonia-all/nuget/v3/index.json) [PRBUILDID]
But nuget cache takes a while to update.
@laolarou726 should be this one:
You can test this PR using the following package version. 11.0.999-cibuild0027927-beta. (feed url: https://pkgs.dev.azure.com/AvaloniaUI/AvaloniaUI/_packaging/avalonia-all/nuget/v3/index.json) [PRBUILDID]
But nuget cache takes a while to update.
I still didn't find the latest build on the Nuget. Is there any way to discard the caches?
@laolarou726 maybe "11.0.999-cibuild0027937-beta" build from the master branch?
Is there any way to discard the caches?
If that still doesn't work, try dotnet nuget locals all --clear
Is there any way to discard the caches?
If that still doesn't work, try
dotnet nuget locals all --clear
Just cleared all the caches, but I still get:
I tried your sample by today and for me it seems to work as expected now.
I tried your sample by today and for me it seems to work as expected now.
Tested today, it seems worked. Thank you guys so much!
@laolarou726 thanks for your findings, the great sample and the feedback. this helped a lot in sorting this one out.
Describe the bug 🐞
When trying to navigate to a page that was previously loaded, RoutedViewHost will become a blank page.
Step to reproduce
Reproduction repository
No response
Expected behavior
When navigate to a previous page, the view should show up normally
Screenshots 🖼️
IDE
Visual Studio 2022
Operating system
Windows
Version
11, 22621.755
AvaloniaUI Version
Avalonia 11.0 - Preview3
ReactiveUI Version
18.3.1
Additional information ℹ️
No response