From b552aac82e4c72e2e1ecebf4d6d73ee2fe109ae5 Mon Sep 17 00:00:00 2001 From: TheXamlGuy Date: Fri, 12 Jul 2024 22:40:53 +0100 Subject: [PATCH] now with less flickering --- Toolkit.Avalonia/FrameHandler.cs | 4 ++ .../SettingsExpander/SettingsExpander.axaml | 71 +++++++++++++++++++ .../SettingsExpander/SettingsExpander.cs | 12 ++++ .../SettingsExpanderToggleButton.cs | 12 +++- 4 files changed, 98 insertions(+), 1 deletion(-) diff --git a/Toolkit.Avalonia/FrameHandler.cs b/Toolkit.Avalonia/FrameHandler.cs index fa6c809..b7b5867 100644 --- a/Toolkit.Avalonia/FrameHandler.cs +++ b/Toolkit.Avalonia/FrameHandler.cs @@ -138,6 +138,10 @@ public class FrameHandler : { switch ($"{transition}") { + case "Suppress": + navigationOptions.TransitionInfoOverride = + new SuppressNavigationTransitionInfo(); + break; case "FromLeft": case "FromRight": case "FromTop": diff --git a/Toolkit.UI.Controls.Avalonia/SettingsExpander/SettingsExpander.axaml b/Toolkit.UI.Controls.Avalonia/SettingsExpander/SettingsExpander.axaml index cda8338..99f5667 100644 --- a/Toolkit.UI.Controls.Avalonia/SettingsExpander/SettingsExpander.axaml +++ b/Toolkit.UI.Controls.Avalonia/SettingsExpander/SettingsExpander.axaml @@ -4,6 +4,75 @@ xmlns:controls="using:Toolkit.UI.Controls.Avalonia" xmlns:ui="using:FluentAvalonia.UI.Controls"> 0 4 0 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -21,6 +90,7 @@ IsChecked="{TemplateBinding IsExpanded, Mode=TwoWay}" IsEnabled="{TemplateBinding IsEnabled}" + IsToggleable="{TemplateBinding Tag}" Theme="{StaticResource SettingsExpanderToggleButtonStyle}" /> ActionTemplateProperty = AvaloniaProperty.Register(nameof(ActionTemplate)); + public static readonly StyledProperty IsToggleableProperty = + AvaloniaProperty.Register(nameof(IsToggleable)); + public object Action { get => GetValue(ActionProperty); @@ -24,6 +29,13 @@ public class SettingsExpander : set => SetValue(ActionTemplateProperty, value); } + public bool IsToggleable + { + get => GetValue(IsToggleableProperty); + set => SetValue(IsToggleableProperty, value); + } + + protected override Type StyleKeyOverride => typeof(SettingsExpander); } diff --git a/Toolkit.UI.Controls.Avalonia/SettingsExpander/SettingsExpanderToggleButton.cs b/Toolkit.UI.Controls.Avalonia/SettingsExpander/SettingsExpanderToggleButton.cs index 257690e..f3d9b06 100644 --- a/Toolkit.UI.Controls.Avalonia/SettingsExpander/SettingsExpanderToggleButton.cs +++ b/Toolkit.UI.Controls.Avalonia/SettingsExpander/SettingsExpanderToggleButton.cs @@ -1,4 +1,5 @@ -using Avalonia.Controls.Primitives; +using Avalonia; +using Avalonia.Controls.Primitives; using Avalonia.Input; namespace Toolkit.UI.Controls.Avalonia; @@ -6,6 +7,15 @@ namespace Toolkit.UI.Controls.Avalonia; public class SettingsExpanderToggleButton : ToggleButton { + public static readonly StyledProperty IsToggleableProperty = + AvaloniaProperty.Register(nameof(IsToggleable)); + + public object IsToggleable + { + get => GetValue(IsToggleableProperty); + set => SetValue(IsToggleableProperty, value); + } + protected override void OnKeyDown(KeyEventArgs args) { if (args.Key is not Key.Space)