Browse Source

fix unsubscribe handler.

pull/4043/head
Dan Walmsley 6 years ago
parent
commit
60c2e45437
  1. 13
      src/Avalonia.Controls/ExperimentalAcrylicBorder.cs

13
src/Avalonia.Controls/ExperimentalAcrylicBorder.cs

@ -16,6 +16,8 @@ namespace Avalonia.Controls
private readonly BorderRenderHelper _borderRenderHelper = new BorderRenderHelper();
private IDisposable _subscription;
static ExperimentalAcrylicBorder()
{
AffectsRender<ExperimentalAcrylicBorder>(
@ -45,7 +47,7 @@ namespace Avalonia.Controls
var tl = (e.Root as TopLevel);
tl.GetObservable(TopLevel.ActualTransparencyLevelProperty)
_subscription = tl.GetObservable(TopLevel.ActualTransparencyLevelProperty)
.Subscribe(x =>
{
switch (x)
@ -69,19 +71,20 @@ namespace Avalonia.Controls
protected override void OnDetachedFromVisualTree(VisualTreeAttachmentEventArgs e)
{
base.OnDetachedFromVisualTree(e);
}
_subscription?.Dispose();
}
public override void Render(DrawingContext context)
{
if(context.PlatformImpl is IDrawingContextWithAcrylicLikeSupport idc)
if (context.PlatformImpl is IDrawingContextWithAcrylicLikeSupport idc)
{
var cornerRadius = CornerRadius;
idc.DrawRectangle(
Material,
Material,
new RoundedRect(
new Rect(Bounds.Size),
new Rect(Bounds.Size),
cornerRadius.TopLeft, cornerRadius.TopRight,
cornerRadius.BottomRight, cornerRadius.BottomLeft));
}

Loading…
Cancel
Save