|
|
|
@ -6,6 +6,7 @@ using Avalonia.Controls.ApplicationLifetimes; |
|
|
|
using Avalonia.Markup.Xaml; |
|
|
|
using Avalonia.Media; |
|
|
|
using Avalonia.Media.Immutable; |
|
|
|
using Avalonia.VisualTree; |
|
|
|
using ControlCatalog.Models; |
|
|
|
using ControlCatalog.Pages; |
|
|
|
|
|
|
|
@ -59,17 +60,25 @@ namespace ControlCatalog |
|
|
|
}; |
|
|
|
|
|
|
|
var transparencyLevels = this.Get<ComboBox>("TransparencyLevels"); |
|
|
|
IDisposable? backgroundSetter = null, paneBackgroundSetter = null; |
|
|
|
IDisposable? topLevelBackgroundSideSetter = null, sideBarBackgroundSetter = null, paneBackgroundSetter = null; |
|
|
|
transparencyLevels.SelectionChanged += (sender, e) => |
|
|
|
{ |
|
|
|
backgroundSetter?.Dispose(); |
|
|
|
topLevelBackgroundSideSetter?.Dispose(); |
|
|
|
sideBarBackgroundSetter?.Dispose(); |
|
|
|
paneBackgroundSetter?.Dispose(); |
|
|
|
if (transparencyLevels.SelectedItem is WindowTransparencyLevel selected |
|
|
|
&& selected != WindowTransparencyLevel.None) |
|
|
|
if (transparencyLevels.SelectedItem is WindowTransparencyLevel selected) |
|
|
|
{ |
|
|
|
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); |
|
|
|
var topLevel = (TopLevel)this.GetVisualRoot()!; |
|
|
|
topLevel.TransparencyLevelHint = selected; |
|
|
|
|
|
|
|
if (selected != WindowTransparencyLevel.None) |
|
|
|
{ |
|
|
|
var transparentBrush = new ImmutableSolidColorBrush(Colors.White, 0); |
|
|
|
var semiTransparentBrush = new ImmutableSolidColorBrush(Colors.Gray, 0.2); |
|
|
|
topLevelBackgroundSideSetter = topLevel.SetValue(BackgroundProperty, transparentBrush, Avalonia.Data.BindingPriority.Style); |
|
|
|
sideBarBackgroundSetter = sideBar.SetValue(BackgroundProperty, semiTransparentBrush, Avalonia.Data.BindingPriority.Style); |
|
|
|
paneBackgroundSetter = sideBar.SetValue(SplitView.PaneBackgroundProperty, semiTransparentBrush, Avalonia.Data.BindingPriority.Style); |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
} |
|
|
|
|