From 7cb4153664096411258cb1f6924d6772ed83caee Mon Sep 17 00:00:00 2001 From: RMBGAME Date: Sat, 23 Oct 2021 15:04:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Ewin11=E4=B8=8A=E5=8F=AF?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E8=83=8C=E6=99=AF=E9=80=8F=E6=98=8E=E6=9D=90?= =?UTF-8?q?=E8=B4=A8Acrylic=20=E6=88=96=20Mica=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../App.axaml.cs | 18 +++++++- .../AvaloniaWindowManagerImpl.cs | 25 +++++++++-- .../Application/UI/IAvaloniaApplication.cs | 45 ------------------- .../Application/UI/Styles/Settings.xaml | 13 +++--- .../Application/UI/Styles/ThemeDark.xaml | 4 +- .../Application/UI/Styles/ThemeLight.xaml | 4 +- .../Application/UI/Views/MainView.axaml | 20 ++++----- .../UI/Views/Pages/Settings/Settings_UI.axaml | 15 +++++++ .../UI/Views/Windows/DebugWindow.axaml.cs | 8 ++-- .../UI/Views/Windows/FluentWindow.cs | 4 +- .../UI/Views/Windows/TaskBarWindow.axaml.cs | 3 +- src/ST.Client/Settings/UISettings.cs | 41 ++++++++++++----- src/ST.Client/UI/IApplication.Desktop.cs | 6 +++ .../UI/Resx/AppResources.Designer.cs | 9 ++++ src/ST.Client/UI/Resx/AppResources.resx | 3 ++ 15 files changed, 127 insertions(+), 91 deletions(-) diff --git a/src/ST.Client.Desktop.Avalonia.App/App.axaml.cs b/src/ST.Client.Desktop.Avalonia.App/App.axaml.cs index 74867e614..658f0a41f 100644 --- a/src/ST.Client.Desktop.Avalonia.App/App.axaml.cs +++ b/src/ST.Client.Desktop.Avalonia.App/App.axaml.cs @@ -322,7 +322,8 @@ namespace System.Application.UI public override void RegisterServices() { IViewModelBase.IsInDesignMode = ApplicationLifetime == null; - if (ViewModelBase.IsInDesignMode) Startup.Init(DILevel.MainProcess | DILevel.GUI); + if (ViewModelBase.IsInDesignMode) + Startup.Init(DILevel.MainProcess | DILevel.GUI); AvaloniaLocator.CurrentMutable.Bind().ToConstant(DI.Get()); base.RegisterServices(); @@ -484,7 +485,20 @@ namespace System.Application.UI #pragma warning restore CA1416 // 验证平台兼容性 } } - + /// + /// 设置当前打开窗口的AvaloniaWinodw背景透明材质 + /// + /// + public void SetAllWindowransparencyMateria(int level) + { + if (Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + foreach (var window in desktop.Windows.Where(x => x.IsActive)) + { + window.TransparencyLevelHint = (WindowTransparencyLevel)level; + } + } + } /// /// Exits the app by calling Shutdown() on the IClassicDesktopStyleApplicationLifetime. diff --git a/src/ST.Client.Desktop.Avalonia/Application/Services/Implementation/AvaloniaWindowManagerImpl.cs b/src/ST.Client.Desktop.Avalonia/Application/Services/Implementation/AvaloniaWindowManagerImpl.cs index 0f1c9aef7..be5dd4f8d 100644 --- a/src/ST.Client.Desktop.Avalonia/Application/Services/Implementation/AvaloniaWindowManagerImpl.cs +++ b/src/ST.Client.Desktop.Avalonia/Application/Services/Implementation/AvaloniaWindowManagerImpl.cs @@ -222,7 +222,11 @@ namespace System.Application.Services.Implementation { try { - app.CloseWindow(vm); + if (app.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + var window = desktop.Windows.FirstOrDefault(x => x.DataContext == vm); + window?.Close(); + } } catch (Exception e) { @@ -235,7 +239,12 @@ namespace System.Application.Services.Implementation { try { - return app.IsVisibleWindow(vm); + if (app.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + var window = desktop.Windows.FirstOrDefault(x => x.DataContext == vm); + return window?.IsVisible == true; + } + return false; } catch (Exception e) { @@ -249,7 +258,11 @@ namespace System.Application.Services.Implementation { try { - app.HideWindow(vm); + if (app.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + var window = desktop.Windows.FirstOrDefault(x => x.DataContext == vm); + window?.Hide(); + } } catch (Exception e) { @@ -262,7 +275,11 @@ namespace System.Application.Services.Implementation { try { - app.ShowWindowNoParent(vm); + if (app.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + var window = desktop.Windows.FirstOrDefault(x => x.DataContext == vm); + window?.Show(); + } } catch (Exception e) { diff --git a/src/ST.Client.Desktop.Avalonia/Application/UI/IAvaloniaApplication.cs b/src/ST.Client.Desktop.Avalonia/Application/UI/IAvaloniaApplication.cs index 4ae14fbda..dceed2389 100644 --- a/src/ST.Client.Desktop.Avalonia/Application/UI/IAvaloniaApplication.cs +++ b/src/ST.Client.Desktop.Avalonia/Application/UI/IAvaloniaApplication.cs @@ -63,51 +63,6 @@ namespace System.Application.UI window.Show(); } - /// - /// 根据WindowViewModel显示window - /// - /// - void ShowWindowNoParent(WindowViewModel vm) - { - if (Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) - { - var window = desktop.Windows.FirstOrDefault(x => x.DataContext == vm); - window?.Show(); - } - } - - /// - /// 根据WindowViewModel关闭window - /// - /// - void CloseWindow(WindowViewModel vm) - { - if (Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) - { - var window = desktop.Windows.FirstOrDefault(x => x.DataContext == vm); - window?.Close(); - } - } - - bool IsVisibleWindow(WindowViewModel vm) - { - if (Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) - { - var window = desktop.Windows.FirstOrDefault(x => x.DataContext == vm); - return window?.IsVisible == true; - } - return false; - } - - void HideWindow(WindowViewModel vm) - { - if (Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) - { - var window = desktop.Windows.FirstOrDefault(x => x.DataContext == vm); - window?.Hide(); - } - } - /// /// 获取当前渲染子系统名称 /// diff --git a/src/ST.Client.Desktop.Avalonia/Application/UI/Styles/Settings.xaml b/src/ST.Client.Desktop.Avalonia/Application/UI/Styles/Settings.xaml index aedf8a031..3d9a4416c 100644 --- a/src/ST.Client.Desktop.Avalonia/Application/UI/Styles/Settings.xaml +++ b/src/ST.Client.Desktop.Avalonia/Application/UI/Styles/Settings.xaml @@ -5,13 +5,10 @@ - - - - - - + + + @@ -115,7 +112,7 @@