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);
        }
Beispiel #2
0
        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 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);
        }
Beispiel #4
0
        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);
        }
Beispiel #6
0
        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
            new bool[0].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);
        }
Beispiel #7
0
        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);
        }
        public void RoutedViewHostDefaultContentNotNull()
        {
            var uc = new RoutedViewHost
            {
                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 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();
        }
    }
Beispiel #10
0
        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);
        }
Beispiel #11
0
        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);
        }