From 65374ed802df661890578eda60ff48f6d2edf382 Mon Sep 17 00:00:00 2001 From: amwx Date: Sun, 21 Mar 2021 19:26:31 -0500 Subject: [PATCH] Update FlyoutPresenter/MenuFlyoutPresenter --- .../Flyouts/FlyoutPresenter.cs | 29 ++++++++++++++++++- .../Flyouts/MenuFlyoutPresenter.cs | 14 +++++++-- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/Avalonia.Controls/Flyouts/FlyoutPresenter.cs b/src/Avalonia.Controls/Flyouts/FlyoutPresenter.cs index 5b753b20a2..7ea7229da5 100644 --- a/src/Avalonia.Controls/Flyouts/FlyoutPresenter.cs +++ b/src/Avalonia.Controls/Flyouts/FlyoutPresenter.cs @@ -1,6 +1,33 @@ -namespace Avalonia.Controls +using Avalonia.Controls.Primitives; +using Avalonia.Input; +using Avalonia.LogicalTree; + +namespace Avalonia.Controls { public class FlyoutPresenter : ContentControl { + public static readonly StyledProperty CornerRadiusProperty = + AvaloniaProperty.Register(nameof(CornerRadius)); + + public CornerRadius CornerRadius + { + get => GetValue(CornerRadiusProperty); + set => SetValue(CornerRadiusProperty, value); + } + + protected override void OnKeyDown(KeyEventArgs e) + { + if (e.Key == Key.Escape) + { + var host = this.FindLogicalAncestorOfType(); + if (host != null) + { + host.IsOpen = false; + e.Handled = true; + } + } + + base.OnKeyDown(e); + } } } diff --git a/src/Avalonia.Controls/Flyouts/MenuFlyoutPresenter.cs b/src/Avalonia.Controls/Flyouts/MenuFlyoutPresenter.cs index 7e59d824fa..3dd37884c0 100644 --- a/src/Avalonia.Controls/Flyouts/MenuFlyoutPresenter.cs +++ b/src/Avalonia.Controls/Flyouts/MenuFlyoutPresenter.cs @@ -1,4 +1,5 @@ -using Avalonia.Controls.Generators; +using System; +using Avalonia.Controls.Generators; using Avalonia.Controls.Platform; using Avalonia.Controls.Primitives; using Avalonia.LogicalTree; @@ -7,6 +8,15 @@ namespace Avalonia.Controls { public class MenuFlyoutPresenter : MenuBase { + public static readonly StyledProperty CornerRadiusProperty = + AvaloniaProperty.Register(nameof(CornerRadius)); + + public CornerRadius CornerRadius + { + get => GetValue(CornerRadiusProperty); + set => SetValue(CornerRadiusProperty, value); + } + public MenuFlyoutPresenter() :base(new DefaultMenuInteractionHandler(true)) { @@ -25,7 +35,7 @@ namespace Avalonia.Controls public override void Open() { - //Ignore + throw new NotSupportedException("Use MenuFlyout.ShowAt(Control) instead"); } protected override IItemContainerGenerator CreateItemContainerGenerator()