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 IsHitTestVisibleActivatesFrameworkElement() { var uc = new TestUserControl(); uc.IsHitTestVisible = false; var activation = new ActivationForViewFetcher(); var obs = activation.GetActivationForView(uc); var activated = obs.CreateCollection(); RoutedEventArgs loaded = new RoutedEventArgs(); loaded.RoutedEvent = FrameworkElement.LoadedEvent; uc.RaiseEvent(loaded); // IsHitTestVisible still false new bool[0].AssertAreEqual(activated); uc.IsHitTestVisible = true; // IsHitTestVisible true new[] { true }.AssertAreEqual(activated); RoutedEventArgs unloaded = new RoutedEventArgs(); unloaded.RoutedEvent = FrameworkElement.UnloadedEvent; uc.RaiseEvent(unloaded); new[] { true, false }.AssertAreEqual(activated); }
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 TestUserControl(); 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); // IsHitTestVisible still false Array.Empty <bool>().AssertAreEqual(activated); uc.IsHitTestVisible = true; // IsHitTestVisible true 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 TestUserControl(); uc.IsHitTestVisible = false; var activation = new ActivationForViewFetcher(); var obs = activation.GetActivationForView(uc); var activated = obs.CreateCollection(scheduler: ImmediateScheduler.Instance); RoutedEventArgs loaded = new RoutedEventArgs(); loaded.RoutedEvent = FrameworkElement.LoadedEvent; uc.RaiseEvent(loaded); // IsHitTestVisible still false new bool[0].AssertAreEqual(activated); uc.IsHitTestVisible = true; // IsHitTestVisible true new[] { true }.AssertAreEqual(activated); RoutedEventArgs unloaded = new RoutedEventArgs(); unloaded.RoutedEvent = FrameworkElement.UnloadedEvent; uc.RaiseEvent(unloaded); new[] { true, false }.AssertAreEqual(activated); }
public void FrameworkElementIsActivatedAndDeactivatedWithHitTest() { var uc = new TestUserControl(); var activation = new ActivationForViewFetcher(); var obs = activation.GetActivationForView(uc); var activated = obs.CreateCollection(scheduler: ImmediateScheduler.Instance); RoutedEventArgs loaded = new RoutedEventArgs(); loaded.RoutedEvent = FrameworkElement.LoadedEvent; uc.RaiseEvent(loaded); new[] { true }.AssertAreEqual(activated); // this should deactivate it uc.IsHitTestVisible = false; new[] { true, false }.AssertAreEqual(activated); // this should activate it uc.IsHitTestVisible = true; new[] { true, false, true }.AssertAreEqual(activated); RoutedEventArgs unloaded = new RoutedEventArgs(); unloaded.RoutedEvent = FrameworkElement.UnloadedEvent; uc.RaiseEvent(unloaded); new[] { true, false, true, false }.AssertAreEqual(activated); }
public void RoutedViewHostDefaultContentNotNullWithViewModelAndNotActivated() { Locator.CurrentMutable.Register <RoutingState>(() => new(ImmediateScheduler.Instance)); Locator.CurrentMutable.Register <TestViewModel>(() => new()); Locator.CurrentMutable.Register <IViewFor <TestViewModel> >(() => new TestView()); var uc = new RoutedViewHost { DefaultContent = new System.Windows.Controls.Label(), Router = Locator.Current.GetService <RoutingState>() ! }; var window = new WpfTestWindow(); window.RootGrid.Children.Add(uc); var activation = new ActivationForViewFetcher(); activation.GetActivationForView(window).ToObservableChangeSet(scheduler: ImmediateScheduler.Instance).Bind(out var windowActivated).Subscribe(); activation.GetActivationForView(uc).ToObservableChangeSet(scheduler: ImmediateScheduler.Instance).Bind(out var controlActivated).Subscribe(); var loaded = new RoutedEventArgs { RoutedEvent = FrameworkElement.LoadedEvent }; // Test navigation before Activation. uc.Router.Navigate.Execute(Locator.Current.GetService <TestViewModel>() !); // Activate window.RaiseEvent(loaded); uc.RaiseEvent(loaded); new[] { true }.AssertAreEqual(windowActivated); new[] { true }.AssertAreEqual(controlActivated); // Test Navigation before activated Assert.IsType <TestView>(uc.Content); window.Dispatcher.InvokeShutdown(); } }
public void ViewModelViewHostDefaultContentNotNull() { var uc = new ViewModelViewHost { DefaultContent = new System.Windows.Controls.Label() }; var window = new WpfTestWindow(); window.RootGrid.Children.Add(uc); var activation = new ActivationForViewFetcher(); activation.GetActivationForView(window) .ToObservableChangeSet(scheduler: ImmediateScheduler.Instance) .Bind(out var windowActivated) .Subscribe(); activation.GetActivationForView(uc) .ToObservableChangeSet(scheduler: ImmediateScheduler.Instance) .Bind(out var controlActivated) .Subscribe(); var loaded = new RoutedEventArgs { RoutedEvent = FrameworkElement.LoadedEvent }; window.RaiseEvent(loaded); uc.RaiseEvent(loaded); new[] { true }.AssertAreEqual(windowActivated); new[] { true }.AssertAreEqual(controlActivated); Assert.NotNull(uc.Content); window.Dispatcher.InvokeShutdown(); }
public void IsHitTestVisibleDeactivatesFrameworkElement() { var uc = new TestUserControl(); var activation = new ActivationForViewFetcher(); var obs = activation.GetActivationForView(uc); var activated = obs.CreateCollection(); RoutedEventArgs loaded = new RoutedEventArgs(); loaded.RoutedEvent = FrameworkElement.LoadedEvent; uc.RaiseEvent(loaded); new[] { true }.AssertAreEqual(activated); uc.IsHitTestVisible = false; new[] { true, false }.AssertAreEqual(activated); }
public void WindowIsActivatedAndDeactivated() { var window = new WpfTestWindow(); var activation = new ActivationForViewFetcher(); var obs = activation.GetActivationForView(window); obs.ToObservableChangeSet(scheduler: ImmediateScheduler.Instance).Bind(out var activated).Subscribe(); var loaded = new RoutedEventArgs(); loaded.RoutedEvent = FrameworkElement.LoadedEvent; window.RaiseEvent(loaded); new[] { true }.AssertAreEqual(activated); window.Close(); new[] { true, false }.AssertAreEqual(activated); }
public void FrameworkElementIsActivatedAndDeactivated() { var uc = new TestUserControl(); var activation = new ActivationForViewFetcher(); var obs = activation.GetActivationForView(uc); var activated = obs.CreateCollection(); RoutedEventArgs loaded = new RoutedEventArgs(); loaded.RoutedEvent = FrameworkElement.LoadedEvent; uc.RaiseEvent(loaded); new[] { true }.AssertAreEqual(activated); RoutedEventArgs unloaded = new RoutedEventArgs(); unloaded.RoutedEvent = FrameworkElement.UnloadedEvent; uc.RaiseEvent(unloaded); new[] { true, false }.AssertAreEqual(activated); }