Browse Source

Add :empty pseudoclass for ContentPresenter

pull/4816/head
Max Katz 6 years ago
parent
commit
f8dcb8e8ee
  1. 16
      src/Avalonia.Controls/Presenters/ContentPresenter.cs

16
src/Avalonia.Controls/Presenters/ContentPresenter.cs

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

Loading…
Cancel
Save