diff --git a/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj b/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj
index 0667644643..32f199ea8b 100644
--- a/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj
+++ b/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj
@@ -2,7 +2,7 @@
WinExe
- net6.0
+ net7.0
true
true
diff --git a/samples/ControlCatalog/MainView.xaml b/samples/ControlCatalog/MainView.xaml
index 55dec57b70..7f5a191519 100644
--- a/samples/ControlCatalog/MainView.xaml
+++ b/samples/ControlCatalog/MainView.xaml
@@ -4,7 +4,218 @@
xmlns:controls="clr-namespace:ControlSamples;assembly=ControlSamples"
xmlns:models="clr-namespace:ControlCatalog.Models"
xmlns:pages="clr-namespace:ControlCatalog.Pages">
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ None
+ BorderOnly
+ Full
+
+
+
+
+ FluentLight
+ FluentDark
+ SimpleLight
+ SimpleDark
+
+
+
+
+ None
+ Transparent
+ Blur
+ AcrylicBlur
+ Mica
+
+
+
+
+ LeftToRight
+ RightToLeft
+
+
+
+
+
+
+
+
diff --git a/samples/ControlCatalog/MainView.xaml.cs b/samples/ControlCatalog/MainView.xaml.cs
index 52dbd25c8c..7133ddaa6a 100644
--- a/samples/ControlCatalog/MainView.xaml.cs
+++ b/samples/ControlCatalog/MainView.xaml.cs
@@ -18,7 +18,104 @@ namespace ControlCatalog
{
AvaloniaXamlLoader.Load(this);
- Console.WriteLine("Main view loaded");
+ var sideBar = this.Get("Sidebar");
+
+ if (AvaloniaLocator.Current?.GetService()?.GetRuntimeInfo().IsDesktop == true)
+ {
+ var tabItems = (sideBar.Items as IList);
+ tabItems?.Add(new TabItem()
+ {
+ Header = "Screens",
+ Content = new ScreenPage()
+ });
+
+ }
+
+ var themes = this.Get("Themes");
+ themes.SelectionChanged += (sender, e) =>
+ {
+ if (themes.SelectedItem is CatalogTheme theme)
+ {
+ var themeStyle = Application.Current!.Styles[0];
+ if (theme == CatalogTheme.FluentLight)
+ {
+ if (App.Fluent.Mode != FluentThemeMode.Light)
+ {
+ App.Fluent.Mode = FluentThemeMode.Light;
+ }
+ Application.Current.Styles[0] = App.Fluent;
+ Application.Current.Styles[1] = App.ColorPickerFluent;
+ Application.Current.Styles[2] = App.DataGridFluent;
+ }
+ else if (theme == CatalogTheme.FluentDark)
+ {
+
+ if (App.Fluent.Mode != FluentThemeMode.Dark)
+ {
+ App.Fluent.Mode = FluentThemeMode.Dark;
+ }
+ Application.Current.Styles[0] = App.Fluent;
+ Application.Current.Styles[1] = App.ColorPickerFluent;
+ Application.Current.Styles[2] = App.DataGridFluent;
+ }
+ else if (theme == CatalogTheme.SimpleLight)
+ {
+ App.Simple.Mode = Avalonia.Themes.Simple.SimpleThemeMode.Light;
+ Application.Current.Styles[0] = App.SimpleLight;
+ Application.Current.Styles[1] = App.ColorPickerSimple;
+ Application.Current.Styles[2] = App.DataGridSimple;
+ }
+ else if (theme == CatalogTheme.SimpleDark)
+ {
+ App.Simple.Mode = Avalonia.Themes.Simple.SimpleThemeMode.Dark;
+ Application.Current.Styles[0] = App.SimpleDark;
+ Application.Current.Styles[1] = App.ColorPickerSimple;
+ Application.Current.Styles[2] = App.DataGridSimple;
+ }
+ }
+ };
+
+ var flowDirections = this.Get("FlowDirection");
+ flowDirections.SelectionChanged += (sender, e) =>
+ {
+ if (flowDirections.SelectedItem is FlowDirection flowDirection)
+ {
+ this.FlowDirection = flowDirection;
+ }
+ };
+
+ var decorations = this.Get("Decorations");
+ decorations.SelectionChanged += (sender, e) =>
+ {
+ if (VisualRoot is Window window
+ && decorations.SelectedItem is SystemDecorations systemDecorations)
+ {
+ window.SystemDecorations = systemDecorations;
+ }
+ };
+
+ var transparencyLevels = this.Get("TransparencyLevels");
+ IDisposable? backgroundSetter = null, paneBackgroundSetter = null;
+ transparencyLevels.SelectionChanged += (sender, e) =>
+ {
+ backgroundSetter?.Dispose();
+ paneBackgroundSetter?.Dispose();
+ if (transparencyLevels.SelectedItem is WindowTransparencyLevel selected
+ && selected != WindowTransparencyLevel.None)
+ {
+ var semiTransparentBrush = new ImmutableSolidColorBrush(Colors.Gray, 0.5);
+ backgroundSetter = sideBar.SetValue(BackgroundProperty, semiTransparentBrush, Avalonia.Data.BindingPriority.Style);
+ paneBackgroundSetter = sideBar.SetValue(SplitView.PaneBackgroundProperty, semiTransparentBrush, Avalonia.Data.BindingPriority.Style);
+ }
+ };
+ }
+
+ protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
+ {
+ base.OnAttachedToVisualTree(e);
+ var decorations = this.Get("Decorations");
+ if (VisualRoot is Window window)
+ decorations.SelectedIndex = (int)window.SystemDecorations;
}
}
}
diff --git a/src/Avalonia.Base/Properties/AssemblyInfo.cs b/src/Avalonia.Base/Properties/AssemblyInfo.cs
index c8368e6d7a..d5e01087ef 100644
--- a/src/Avalonia.Base/Properties/AssemblyInfo.cs
+++ b/src/Avalonia.Base/Properties/AssemblyInfo.cs
@@ -30,4 +30,5 @@ using Avalonia.Metadata;
[assembly: InternalsVisibleTo("Avalonia.Skia.UnitTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c1bba1142285fe0419326fb25866ba62c47e6c2b5c1ab0c95b46413fad375471232cb81706932e1cef38781b9ebd39d5100401bacb651c6c5bbf59e571e81b3bc08d2a622004e08b1a6ece82a7e0b9857525c86d2b95fab4bc3dce148558d7f3ae61aa3a234086902aeface87d9dfdd32b9d2fe3c6dd4055b5ab4b104998bd87")]
[assembly: InternalsVisibleTo("Avalonia.UnitTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c1bba1142285fe0419326fb25866ba62c47e6c2b5c1ab0c95b46413fad375471232cb81706932e1cef38781b9ebd39d5100401bacb651c6c5bbf59e571e81b3bc08d2a622004e08b1a6ece82a7e0b9857525c86d2b95fab4bc3dce148558d7f3ae61aa3a234086902aeface87d9dfdd32b9d2fe3c6dd4055b5ab4b104998bd87")]
[assembly: InternalsVisibleTo("Avalonia.Web.Blazor, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c1bba1142285fe0419326fb25866ba62c47e6c2b5c1ab0c95b46413fad375471232cb81706932e1cef38781b9ebd39d5100401bacb651c6c5bbf59e571e81b3bc08d2a622004e08b1a6ece82a7e0b9857525c86d2b95fab4bc3dce148558d7f3ae61aa3a234086902aeface87d9dfdd32b9d2fe3c6dd4055b5ab4b104998bd87")]
+[assembly: InternalsVisibleTo("Avalonia.Web, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c1bba1142285fe0419326fb25866ba62c47e6c2b5c1ab0c95b46413fad375471232cb81706932e1cef38781b9ebd39d5100401bacb651c6c5bbf59e571e81b3bc08d2a622004e08b1a6ece82a7e0b9857525c86d2b95fab4bc3dce148558d7f3ae61aa3a234086902aeface87d9dfdd32b9d2fe3c6dd4055b5ab4b104998bd87")]
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")]