diff --git a/src/Avalonia.Controls/Presenters/ContentPresenter.cs b/src/Avalonia.Controls/Presenters/ContentPresenter.cs
index 8837901816..3fd927afa3 100644
--- a/src/Avalonia.Controls/Presenters/ContentPresenter.cs
+++ b/src/Avalonia.Controls/Presenters/ContentPresenter.cs
@@ -1,9 +1,9 @@
using System;
+
+using Avalonia.Controls.Metadata;
using Avalonia.Controls.Primitives;
using Avalonia.Controls.Templates;
using Avalonia.Controls.Utils;
-using Avalonia.Data;
-using Avalonia.Input;
using Avalonia.Layout;
using Avalonia.LogicalTree;
using Avalonia.Media;
@@ -14,6 +14,7 @@ namespace Avalonia.Controls.Presenters
///
/// Presents a single item of data inside a template.
///
+ [PseudoClasses(":empty")]
public class ContentPresenter : Control, IContentPresenter
{
///
@@ -102,6 +103,11 @@ namespace Avalonia.Controls.Presenters
TemplatedParentProperty.Changed.AddClassHandler((x, e) => x.TemplatedParentChanged(e));
}
+ public ContentPresenter()
+ {
+ UpdatePseudoClasses();
+ }
+
///
/// Gets or sets a brush with which to paint the background.
///
@@ -424,9 +430,15 @@ namespace Avalonia.Controls.Presenters
_recyclingDataTemplate = null;
}
+ UpdatePseudoClasses();
InvalidateMeasure();
}
+ private void UpdatePseudoClasses()
+ {
+ PseudoClasses.Set(":empty", Content is null);
+ }
+
private double GetLayoutScale()
{
var result = (VisualRoot as ILayoutRoot)?.LayoutScaling ?? 1.0;