public void FrameworkElementIsActivatedAndDeactivated() { var uc = new WpfTestUserControl(); var activation = new ActivationForViewFetcher(); var obs = activation.GetActivationForView(uc); obs.ToObservableChangeSet(scheduler: ImmediateScheduler.Instance).Bind(out var activated).Subscribe(); var loaded = new RoutedEventArgs(); loaded.RoutedEvent = FrameworkElement.LoadedEvent; uc.RaiseEvent(loaded); new[] { true }.AssertAreEqual(activated); var unloaded = new RoutedEventArgs(); unloaded.RoutedEvent = FrameworkElement.UnloadedEvent; uc.RaiseEvent(unloaded); new[] { true, false }.AssertAreEqual(activated); }
public void IsHitTestVisibleActivatesFrameworkElement() { var uc = new WpfTestUserControl(); uc.IsHitTestVisible = false; var activation = new ActivationForViewFetcher(); var obs = activation.GetActivationForView(uc); obs.ToObservableChangeSet(scheduler: ImmediateScheduler.Instance).Bind(out var activated).Subscribe(); var loaded = new RoutedEventArgs(); loaded.RoutedEvent = FrameworkElement.LoadedEvent; uc.RaiseEvent(loaded); // Loaded has happened. new[] { true }.AssertAreEqual(activated); uc.IsHitTestVisible = true; // IsHitTestVisible true, we don't want the event to repeat unnecessarily. new[] { true }.AssertAreEqual(activated); var unloaded = new RoutedEventArgs(); unloaded.RoutedEvent = FrameworkElement.UnloadedEvent; uc.RaiseEvent(unloaded); // We had both a loaded/hit test visible change/unloaded happen. new[] { true, false }.AssertAreEqual(activated); }
public void WindowAndFrameworkElementAreActivatedAndDeactivated() { var window = new WpfTestWindow(); var uc = new WpfTestUserControl(); window.RootGrid.Children.Add(uc); var activation = new ActivationForViewFetcher(); var windowObs = activation.GetActivationForView(window); windowObs.ToObservableChangeSet(scheduler: ImmediateScheduler.Instance).Bind(out var windowActivated).Subscribe(); var ucObs = activation.GetActivationForView(uc); ucObs.ToObservableChangeSet(scheduler: ImmediateScheduler.Instance).Bind(out var controlActivated).Subscribe(); var loaded = new RoutedEventArgs(); loaded.RoutedEvent = FrameworkElement.LoadedEvent; window.RaiseEvent(loaded); uc.RaiseEvent(loaded); new[] { true }.AssertAreEqual(windowActivated); new[] { true }.AssertAreEqual(controlActivated); window.Dispatcher.InvokeShutdown(); new[] { true, false }.AssertAreEqual(windowActivated); new[] { true, false }.AssertAreEqual(controlActivated); }