liwuqingxin / Avalonia.Css

Enable css for avalonia.
MIT License
202 stars 4 forks source link

Can't launch demo #10

Open D0ctorWh0 opened 8 months ago

D0ctorWh0 commented 8 months ago

I am trying to launch demo, but it fails to run. It looks like problem with regional parameters. After I changed decimal separator from ',' to '.' demo opened window but then crashed again with following log:

[Binding]Error in binding to 'Nlnet.Avalonia.Svg.Controls.Icon'.'IconSvg': 'Null value in expression '{empty}' at 'SelectedGalleryItem'.'(Icon #62835574)
[Binding]Error in binding to 'Avalonia.Controls.TextBlock'.'Text': 'Null value in expression '{empty}' at 'SelectedGalleryItem'.'(TextBlock #28649262)
[Binding]Error in binding to 'Nlnet.Avalonia.Senior.Controls.NtCaptionButtons'.'UseCloseButton': 'Null value in expression '{empty}' at ''.'(NtCaptionButtons #27077540)
[Binding]Error in binding to 'Nlnet.Avalonia.Senior.Controls.NtCaptionButtons'.'UseFullScreenButton': 'Null value in expression '{empty}' at ''.'(NtCaptionButtons #27077540)
[Binding]Error in binding to 'Nlnet.Avalonia.Senior.Controls.NtCaptionButtons'.'UseMaximizeButton': 'Null value in expression '{empty}' at ''.'(NtCaptionButtons #27077540)
[Binding]Error in binding to 'Nlnet.Avalonia.Senior.Controls.NtCaptionButtons'.'UseMinimizeButton': 'Null value in expression '{empty}' at ''.'(NtCaptionButtons #27077540)
[Binding]Error in binding to 'Avalonia.Controls.ColumnDefinition'.'Width': 'Null value in expression '{empty}' at ''.'(ColumnDefinition #60828848)
[Program]'System.Exception: Something wrong in acss. Please check the inner exception.
 ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 ---> System.FormatException: Input string was not in a correct format.
   at System.Number.ThrowOverflowOrFormatException(ParsingStatus status, TypeCode type)
   at System.Double.Parse(String s)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Span`1& arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at Nlnet.Avalonia.Css.AcssInterpreter.ParseClrValue(Type declaredType, String rawValue)
   at Nlnet.Avalonia.Css.AcssInterpreter.ParseDynamicValue(AvaloniaProperty avaloniaProperty, String rawValue)
   at Nlnet.Avalonia.Css.AcssSetter.ToAvaloniaSetter(IAcssContext context, Type targetType)
   at Nlnet.Avalonia.Css.AcssStyle.<>c__DisplayClass44_0.<ToAvaloniaStyle>b__0(IAcssSetter s)
   at System.Linq.Enumerable.SelectListIterator`2.MoveNext()
   at System.Linq.Enumerable.OfTypeIterator[TResult](IEnumerable source)+MoveNext()
   at Nlnet.Avalonia.Css.AcssStyle.ToAvaloniaStyle()
   at Nlnet.Avalonia.Css.AcssStyle.ToAvaloniaStyle()
   at Nlnet.Avalonia.Css.AcssFile.Load(Styles styles, Boolean reapplyStyle)
   --- End of inner exception stack trace ---
   at Nlnet.Avalonia.Css.AcssFile.<>c__DisplayClass6_2.<Load>b__6()
   at Avalonia.Threading.DispatcherOperation.InvokeCore() in /_/src/Avalonia.Base/Threading/DispatcherOperation.cs:line 274
   at Avalonia.Threading.DispatcherOperation.Execute() in /_/src/Avalonia.Base/Threading/DispatcherOperation.cs:line 262
   at Avalonia.Threading.Dispatcher.ExecuteJob(DispatcherOperation job) in /_/src/Avalonia.Base/Threading/Dispatcher.Queue.cs:line 122
   at Avalonia.Threading.Dispatcher.ExecuteJobsCore() in /_/src/Avalonia.Base/Threading/Dispatcher.Queue.cs:line 153
   at Avalonia.Threading.Dispatcher.Signaled() in /_/src/Avalonia.Base/Threading/Dispatcher.Queue.cs:line 133
   at Avalonia.Win32.Win32DispatcherImpl.DispatchWorkItem() in /_/src/Windows/Avalonia.Win32/Win32DispatcherImpl.cs:line 34
   at Avalonia.Win32.Win32Platform.WndProc(IntPtr hWnd, UInt32 msg, IntPtr wParam, IntPtr lParam) in /_/src/Windows/Avalonia.Win32/Win32Platform.cs:line 137
   at Avalonia.Win32.Interop.UnmanagedMethods.DispatchMessage(MSG& lpmsg)
   at Avalonia.Win32.Win32DispatcherImpl.RunLoop(CancellationToken cancellationToken) in /_/src/Windows/Avalonia.Win32/Win32DispatcherImpl.cs:line 111
   at Avalonia.Threading.DispatcherFrame.Run(IControlledDispatcherImpl impl) in /_/src/Avalonia.Base/Threading/DispatcherFrame.cs:line 117
   at Avalonia.Threading.Dispatcher.PushFrame(DispatcherFrame frame) in /_/src/Avalonia.Base/Threading/Dispatcher.MainLoop.cs:line 53
   at Avalonia.Threading.Dispatcher.MainLoop(CancellationToken cancellationToken) in /_/src/Avalonia.Base/Threading/Dispatcher.MainLoop.cs:line 80
   at Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetime.Start(String[] args) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 127
   at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime(AppBuilder builder, String[] args, ShutdownMode shutdownMode) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 220
   at Nlnet.Avalonia.Css.App.Program.Main(String[] args)', 'System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 ---> System.FormatException: Input string was not in a correct format.
   at System.Number.ThrowOverflowOrFormatException(ParsingStatus status, TypeCode type)
   at System.Double.Parse(String s)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Span`1& arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at Nlnet.Avalonia.Css.AcssInterpreter.ParseClrValue(Type declaredType, String rawValue)
   at Nlnet.Avalonia.Css.AcssInterpreter.ParseDynamicValue(AvaloniaProperty avaloniaProperty, String rawValue)
   at Nlnet.Avalonia.Css.AcssSetter.ToAvaloniaSetter(IAcssContext context, Type targetType)
   at Nlnet.Avalonia.Css.AcssStyle.<>c__DisplayClass44_0.<ToAvaloniaStyle>b__0(IAcssSetter s)
   at System.Linq.Enumerable.SelectListIterator`2.MoveNext()
   at System.Linq.Enumerable.OfTypeIterator[TResult](IEnumerable source)+MoveNext()
   at Nlnet.Avalonia.Css.AcssStyle.ToAvaloniaStyle()
   at Nlnet.Avalonia.Css.AcssStyle.ToAvaloniaStyle()
   at Nlnet.Avalonia.Css.AcssFile.Load(Styles styles, Boolean reapplyStyle)'
liwuqingxin commented 8 months ago

@D0ctorWh0 I've reproduced this issue. This problem occurs when the decimal point in the locale is not a period. Thanks for your feedback, I will fix this issue as soon as possible. :-)

liwuqingxin commented 8 months ago

You can set the culture manually to avoid that problem before the fix. The culture any used a period as decimal point is ok, like cn, us...

        // Initialization code. Don't use any Avalonia, third-party APIs or any
        // SynchronizationContext-reliant code before AppMain is called: things aren't initialized
        // yet and stuff might break.
        [STAThread]
        public static void Main(string[] args)
        {
            try
            {
                CultureInfo.CurrentCulture = new CultureInfo("en-us");
                BuildAvaloniaApp()
                    .StartWithClassicDesktopLifetime(args);
            }
            catch (Exception e)
            {
                ...
            }
        }