public void RoutedViewHost_Should_Stay_In_Sync_With_RoutingState() { var screen = new ScreenViewModel(); var defaultContent = new TextBlock(); var host = new RoutedViewHost { Router = screen.Router, DefaultContent = defaultContent, FadeOutAnimation = null, FadeInAnimation = null }; var root = new TestRoot { Child = host }; Assert.NotNull(host.Content); Assert.Equal(typeof(TextBlock), host.Content.GetType()); Assert.Equal(defaultContent, host.Content); var first = new FirstRoutableViewModel(); screen.Router.Navigate .Execute(first) .Subscribe(); Assert.NotNull(host.Content); Assert.Equal(typeof(FirstRoutableView), host.Content.GetType()); Assert.Equal(first, ((FirstRoutableView)host.Content).DataContext); Assert.Equal(first, ((FirstRoutableView)host.Content).ViewModel); var second = new SecondRoutableViewModel(); screen.Router.Navigate .Execute(second) .Subscribe(); Assert.NotNull(host.Content); Assert.Equal(typeof(SecondRoutableView), host.Content.GetType()); Assert.Equal(second, ((SecondRoutableView)host.Content).DataContext); Assert.Equal(second, ((SecondRoutableView)host.Content).ViewModel); screen.Router.NavigateBack .Execute(Unit.Default) .Subscribe(); Assert.NotNull(host.Content); Assert.Equal(typeof(FirstRoutableView), host.Content.GetType()); Assert.Equal(first, ((FirstRoutableView)host.Content).DataContext); Assert.Equal(first, ((FirstRoutableView)host.Content).ViewModel); screen.Router.NavigateBack .Execute(Unit.Default) .Subscribe(); Assert.NotNull(host.Content); Assert.Equal(typeof(TextBlock), host.Content.GetType()); Assert.Equal(defaultContent, host.Content); }
public void RoutedViewHost_Should_Stay_In_Sync_With_RoutingState() { var screen = new ScreenViewModel(); var defaultContent = new TextBlock(); var host = new RoutedViewHost { Router = screen.Router, DefaultContent = defaultContent, PageTransition = null }; var root = new TestRoot { Child = host }; Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded); Assert.NotNull(host.Content); Assert.IsType <TextBlock>(host.Content); Assert.Equal(defaultContent, host.Content); var first = new FirstRoutableViewModel(); screen.Router.Navigate.Execute(first).Subscribe(); Assert.NotNull(host.Content); Assert.IsType <FirstRoutableView>(host.Content); Assert.Equal(first, ((FirstRoutableView)host.Content).DataContext); Assert.Equal(first, ((FirstRoutableView)host.Content).ViewModel); var second = new SecondRoutableViewModel(); screen.Router.Navigate.Execute(second).Subscribe(); Assert.NotNull(host.Content); Assert.IsType <SecondRoutableView>(host.Content); Assert.Equal(second, ((SecondRoutableView)host.Content).DataContext); Assert.Equal(second, ((SecondRoutableView)host.Content).ViewModel); screen.Router.NavigateBack.Execute(Unit.Default).Subscribe(); Assert.NotNull(host.Content); Assert.IsType <FirstRoutableView>(host.Content); Assert.Equal(first, ((FirstRoutableView)host.Content).DataContext); Assert.Equal(first, ((FirstRoutableView)host.Content).ViewModel); screen.Router.NavigateBack.Execute(Unit.Default).Subscribe(); Assert.NotNull(host.Content); Assert.IsType <TextBlock>(host.Content); Assert.Equal(defaultContent, host.Content); }
public void RoutedViewHost_Should_Show_Default_Content_When_Router_Is_Null() { var screen = new ScreenViewModel(); var defaultContent = new TextBlock(); var host = new RoutedViewHost { DefaultContent = defaultContent, PageTransition = null, Router = null }; var root = new TestRoot { Child = host }; Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded); Assert.NotNull(host.Content); Assert.Equal(defaultContent, host.Content); host.Router = screen.Router; Assert.NotNull(host.Content); Assert.Equal(defaultContent, host.Content); var first = new FirstRoutableViewModel(); screen.Router.Navigate.Execute(first).Subscribe(); Assert.NotNull(host.Content); Assert.IsType <FirstRoutableView>(host.Content); host.Router = null; Assert.NotNull(host.Content); Assert.Equal(defaultContent, host.Content); host.Router = screen.Router; Assert.NotNull(host.Content); Assert.IsType <FirstRoutableView>(host.Content); }
public void RoutedViewHost_Should_Stay_In_Sync_With_RoutingState_And_Contract() { var screen = new ScreenViewModel(); var defaultContent = new TextBlock(); var host = new RoutedViewHost { Router = screen.Router, DefaultContent = defaultContent, PageTransition = null }; var root = new TestRoot { Child = host }; Assert.NotNull(host.Content); Assert.IsType <TextBlock>(host.Content); Assert.Equal(defaultContent, host.Content); var first = new FirstRoutableViewModel(); screen.Router.Navigate.Execute(first).Subscribe(); host.ViewContract = null; Assert.NotNull(host.Content); Assert.IsType <FirstRoutableView>(host.Content); Assert.Equal(first, ((FirstRoutableView)host.Content).DataContext); Assert.Equal(first, ((FirstRoutableView)host.Content).ViewModel); host.ViewContract = AlternativeViewContract; Assert.NotNull(host.Content); Assert.IsType <AlternativeFirstRoutableView>(host.Content); Assert.Equal(first, ((AlternativeFirstRoutableView)host.Content).DataContext); Assert.Equal(first, ((AlternativeFirstRoutableView)host.Content).ViewModel); var second = new SecondRoutableViewModel(); screen.Router.Navigate.Execute(second).Subscribe(); host.ViewContract = null; Assert.NotNull(host.Content); Assert.IsType <SecondRoutableView>(host.Content); Assert.Equal(second, ((SecondRoutableView)host.Content).DataContext); Assert.Equal(second, ((SecondRoutableView)host.Content).ViewModel); host.ViewContract = AlternativeViewContract; Assert.NotNull(host.Content); Assert.IsType <AlternativeSecondRoutableView>(host.Content); Assert.Equal(second, ((AlternativeSecondRoutableView)host.Content).DataContext); Assert.Equal(second, ((AlternativeSecondRoutableView)host.Content).ViewModel); screen.Router.NavigateBack.Execute(Unit.Default).Subscribe(); Assert.NotNull(host.Content); Assert.IsType <AlternativeFirstRoutableView>(host.Content); Assert.Equal(first, ((AlternativeFirstRoutableView)host.Content).DataContext); Assert.Equal(first, ((AlternativeFirstRoutableView)host.Content).ViewModel); screen.Router.NavigateBack.Execute(Unit.Default).Subscribe(); Assert.NotNull(host.Content); Assert.IsType <TextBlock>(host.Content); Assert.Equal(defaultContent, host.Content); }