Add GradientStops support to GradientBrush
This commit is contained in:
Родитель
2e98968a99
Коммит
9976e74105
|
@ -0,0 +1,16 @@
|
|||
// Copyright (c) Microsoft Corporation.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using Microsoft.AspNetCore.Components;
|
||||
|
||||
namespace Microsoft.MobileBlazorBindings.Elements
|
||||
{
|
||||
public abstract partial class GradientBrush : Brush
|
||||
{
|
||||
#pragma warning disable CA1721 // Property names should not match get methods
|
||||
[Parameter] public RenderFragment ChildContent { get; set; }
|
||||
#pragma warning restore CA1721 // Property names should not match get methods
|
||||
|
||||
protected override RenderFragment GetChildContent() => ChildContent;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
// Copyright (c) Microsoft Corporation.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using XF = Xamarin.Forms;
|
||||
|
||||
namespace Microsoft.MobileBlazorBindings.Elements.Handlers
|
||||
{
|
||||
public abstract partial class GradientBrushHandler : BrushHandler, IXamarinFormsContainerElementHandler
|
||||
{
|
||||
public void AddChild(XF.Element child, int physicalSiblingIndex)
|
||||
{
|
||||
if (!(child is XF.GradientStop gradientStopChild))
|
||||
{
|
||||
throw new ArgumentException($"GradientBrush support GradientStop child elements only, but {child?.GetType()} found instead.", nameof(child));
|
||||
}
|
||||
|
||||
if (physicalSiblingIndex <= GradientBrushControl.GradientStops.Count)
|
||||
{
|
||||
GradientBrushControl.GradientStops.Insert(physicalSiblingIndex, gradientStopChild);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.WriteLine($"WARNING: {nameof(AddChild)} called with {nameof(physicalSiblingIndex)}={physicalSiblingIndex}, but GradientBrushControl.GradientStops.Count={GradientBrushControl.GradientStops}");
|
||||
GradientBrushControl.GradientStops.Add(gradientStopChild);
|
||||
}
|
||||
}
|
||||
|
||||
public int GetChildIndex(XF.Element child)
|
||||
{
|
||||
if (!(child is XF.GradientStop gradientStopChild))
|
||||
{
|
||||
throw new ArgumentException($"GradientBrush support GradientStop child elements only, but {child?.GetType()} found instead.", nameof(child));
|
||||
}
|
||||
|
||||
return GradientBrushControl.GradientStops.IndexOf(gradientStopChild);
|
||||
}
|
||||
|
||||
public void RemoveChild(XF.Element child)
|
||||
{
|
||||
if (!(child is XF.GradientStop gradientStopChild))
|
||||
{
|
||||
throw new ArgumentException($"GradientBrush support GradientStop child elements only, but {child?.GetType()} found instead.", nameof(child));
|
||||
}
|
||||
|
||||
GradientBrushControl.GradientStops.Remove(gradientStopChild);
|
||||
}
|
||||
}
|
||||
}
|
Загрузка…
Ссылка в новой задаче