From 65c559e6c9e46b9e9caa6d2f42a17ad5b65289ab Mon Sep 17 00:00:00 2001 From: Max Katz Date: Fri, 12 Aug 2022 20:29:00 -0400 Subject: [PATCH] Use Loaded event in ReactiveUI --- .../AvaloniaActivationForViewFetcher.cs | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/Avalonia.ReactiveUI/AvaloniaActivationForViewFetcher.cs b/src/Avalonia.ReactiveUI/AvaloniaActivationForViewFetcher.cs index 5c713804e9..9f69b4ee6e 100644 --- a/src/Avalonia.ReactiveUI/AvaloniaActivationForViewFetcher.cs +++ b/src/Avalonia.ReactiveUI/AvaloniaActivationForViewFetcher.cs @@ -2,6 +2,7 @@ using System; using System.Reactive.Linq; using Avalonia.VisualTree; using Avalonia.Controls; +using Avalonia.Interactivity; using ReactiveUI; namespace Avalonia.ReactiveUI @@ -25,27 +26,28 @@ namespace Avalonia.ReactiveUI public IObservable GetActivationForView(IActivatableView view) { if (!(view is IVisual visual)) return Observable.Return(false); - if (view is WindowBase window) return GetActivationForWindowBase(window); + if (view is Control control) return GetActivationForControl(control); return GetActivationForVisual(visual); } /// - /// Listens to Opened and Closed events for Avalonia windows. + /// Listens to Loaded and Unloaded + /// events for Avalonia Control. /// - private IObservable GetActivationForWindowBase(WindowBase window) + private IObservable GetActivationForControl(Control control) { - var windowLoaded = Observable - .FromEventPattern( - x => window.Opened += x, - x => window.Opened -= x) + var controlLoaded = Observable + .FromEventPattern( + x => control.Loaded += x, + x => control.Loaded -= x) .Select(args => true); - var windowUnloaded = Observable - .FromEventPattern( - x => window.Closed += x, - x => window.Closed -= x) + var controlUnloaded = Observable + .FromEventPattern( + x => control.Unloaded += x, + x => control.Unloaded -= x) .Select(args => false); - return windowLoaded - .Merge(windowUnloaded) + return controlLoaded + .Merge(controlUnloaded) .DistinctUntilChanged(); }