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

Loading…
Cancel
Save