Files
aistudio-wpf-diagram/Fluent.Ribbon/Fluent.Ribbon.Showcase/Adorners/SimpleControlAdorner.cs
2021-07-23 09:42:22 +08:00

62 lines
1.5 KiB
C#

namespace FluentTest.Adorners
{
using System;
using System.Windows;
using System.Windows.Documents;
using System.Windows.Media;
public class SimpleControlAdorner : Adorner
{
private FrameworkElement child;
public SimpleControlAdorner(UIElement adornedElement)
: base(adornedElement)
{
}
protected override int VisualChildrenCount => 1;
protected override Visual GetVisualChild(int index)
{
if (index != 0)
{
throw new ArgumentOutOfRangeException(nameof(index), index, "There is only one visual child.");
}
return this.child;
}
public FrameworkElement Child
{
get => this.child;
set
{
if (this.child != null)
{
this.RemoveVisualChild(this.child);
}
this.child = value;
if (this.child != null)
{
this.AddVisualChild(this.child);
}
}
}
protected override Size MeasureOverride(Size constraint)
{
this.child.Measure(constraint);
return this.child.DesiredSize;
}
protected override Size ArrangeOverride(Size finalSize)
{
this.child.Arrange(new Rect(new Point(0, 0), finalSize));
return new Size(this.child.ActualWidth, this.child.ActualHeight);
}
}
}