From 603a2bdb43b7e8b2d1c8919f9d0669af7b33f117 Mon Sep 17 00:00:00 2001 From: Emmanuel Hansen Date: Mon, 3 Mar 2025 17:41:05 -0500 Subject: [PATCH] add content template to flyout (#18361) --- src/Avalonia.Controls/Flyouts/Flyout.cs | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/Avalonia.Controls/Flyouts/Flyout.cs b/src/Avalonia.Controls/Flyouts/Flyout.cs index 8ec5cfa50a..3f83b3be82 100644 --- a/src/Avalonia.Controls/Flyouts/Flyout.cs +++ b/src/Avalonia.Controls/Flyouts/Flyout.cs @@ -1,5 +1,6 @@ using System.ComponentModel; using Avalonia.Controls.Primitives; +using Avalonia.Controls.Templates; using Avalonia.Metadata; using Avalonia.Styling; @@ -10,8 +11,14 @@ namespace Avalonia.Controls /// /// Defines the property /// - public static readonly StyledProperty ContentProperty = - AvaloniaProperty.Register(nameof(Content)); + public static readonly StyledProperty ContentProperty = + AvaloniaProperty.Register(nameof(Content)); + + /// + /// Defines the property. + /// + public static readonly StyledProperty ContentTemplateProperty = + AvaloniaProperty.Register(nameof(ContentTemplate)); private Classes? _classes; @@ -39,17 +46,27 @@ namespace Avalonia.Controls /// Gets or sets the content to display in this flyout /// [Content] - public object Content + public object? Content { get => GetValue(ContentProperty); set => SetValue(ContentProperty, value); } + /// + /// Gets or sets the data template used to display the content of the flyout. + /// + public IDataTemplate? ContentTemplate + { + get => GetValue(ContentTemplateProperty); + set => SetValue(ContentTemplateProperty, value); + } + protected override Control CreatePresenter() { return new FlyoutPresenter { - [!ContentControl.ContentProperty] = this[!ContentProperty] + [!ContentControl.ContentProperty] = this[!ContentProperty], + [!ContentControl.ContentTemplateProperty] = this[!ContentTemplateProperty] }; }