Jelajahi Sumber

fix: Avoid Cast exception on Single View Application

Giuseppe Lippolis 3 tahun lalu
induk
melakukan
b4859f0479

+ 2 - 3
samples/ControlCatalog/MainView.xaml.cs

@@ -2,10 +2,10 @@ using System;
 using System.Collections;
 using System.Collections;
 using Avalonia;
 using Avalonia;
 using Avalonia.Controls;
 using Avalonia.Controls;
+using Avalonia.Controls.ApplicationLifetimes;
 using Avalonia.Markup.Xaml;
 using Avalonia.Markup.Xaml;
 using Avalonia.Media;
 using Avalonia.Media;
 using Avalonia.Media.Immutable;
 using Avalonia.Media.Immutable;
-using Avalonia.Platform;
 using Avalonia.Themes.Fluent;
 using Avalonia.Themes.Fluent;
 using ControlCatalog.Models;
 using ControlCatalog.Models;
 using ControlCatalog.Pages;
 using ControlCatalog.Pages;
@@ -20,7 +20,7 @@ namespace ControlCatalog
 
 
             var sideBar = this.Get<TabControl>("Sidebar");
             var sideBar = this.Get<TabControl>("Sidebar");
 
 
-            if (AvaloniaLocator.Current?.GetService<IRuntimePlatform>()?.GetRuntimeInfo().IsDesktop == true)
+            if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime)
             {
             {
                 var tabItems = (sideBar.Items as IList);
                 var tabItems = (sideBar.Items as IList);
                 tabItems?.Add(new TabItem()
                 tabItems?.Add(new TabItem()
@@ -28,7 +28,6 @@ namespace ControlCatalog
                     Header = "Screens",
                     Header = "Screens",
                     Content = new ScreenPage()
                     Content = new ScreenPage()
                 });
                 });
-
             }
             }
 
 
             var themes = this.Get<ComboBox>("Themes");
             var themes = this.Get<ComboBox>("Themes");

+ 5 - 4
samples/ControlCatalog/Pages/ScreenPage.cs

@@ -2,7 +2,6 @@ using System;
 using System.Globalization;
 using System.Globalization;
 using Avalonia;
 using Avalonia;
 using Avalonia.Controls;
 using Avalonia.Controls;
-using Avalonia.Markup.Xaml;
 using Avalonia.Media;
 using Avalonia.Media;
 using Avalonia.Platform;
 using Avalonia.Platform;
 using Avalonia.Rendering;
 using Avalonia.Rendering;
@@ -18,8 +17,10 @@ namespace ControlCatalog.Pages
         protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
         protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
         {
         {
             base.OnAttachedToVisualTree(e);
             base.OnAttachedToVisualTree(e);
-            Window w = (Window)VisualRoot!;
-            w.PositionChanged += (sender, args) => InvalidateVisual();
+            if(VisualRoot is Window w)
+            {
+                w.PositionChanged += (_, _) => InvalidateVisual();
+            }
         }
         }
 
 
         public override void Render(DrawingContext context)
         public override void Render(DrawingContext context)
@@ -27,7 +28,7 @@ namespace ControlCatalog.Pages
             base.Render(context);
             base.Render(context);
             if (!(VisualRoot is Window w))
             if (!(VisualRoot is Window w))
             {
             {
-                return;                
+                return;
             }
             }
             var screens = w.Screens.All;
             var screens = w.Screens.All;
             var scaling = ((IRenderRoot)w).RenderScaling;
             var scaling = ((IRenderRoot)w).RenderScaling;