コード例 #1
0
        public ViewModelLocator()
        {
            try
            {
                var config = new ConfigurationBuilder();
                config.AddJsonFile("autofac.json");
                var module  = new ConfigurationModule(config.Build());
                var builder = new ContainerBuilder();
                builder.RegisterModule(module);
                Container = builder.Build();

                navigationService = Container.Resolve <INavigationService>();
                appViewModel      = Container.Resolve <AppViewModel>();
                firstViewModel    = Container.Resolve <FirstViewModel>();
                secondViewModel   = Container.Resolve <SecondViewModel>();
                thirdViewModel    = Container.Resolve <ThirdViewModel>();

                navigationService.Register <FirstViewModel>(firstViewModel);
                navigationService.Register <SecondViewModel>(secondViewModel);
                navigationService.Register <ThirdViewModel>(thirdViewModel);

                navigationService.Navigate <SecondViewModel>();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
コード例 #2
0
        public void TestFirstViewModelNavigation()
        {
            var firstViewModel  = new FirstViewModel(null);
            var secondViewModel = new SecondViewModel();
            var thirdViewModel  = new ThirdViewModel();
            MainWindowViewModel mainViewModel = new MainWindowViewModel(firstViewModel, secondViewModel, thirdViewModel);

            Assert.AreEqual(firstViewModel, mainViewModel.CurrentViewModel);

            // we are in FirstViewModel, we click "Navigate to second" and in messagebox we click No
            var mock = new Mock <IMessageBoxService>();

            mock.Setup(messageBox => messageBox.Show(It.IsAny <string>(), It.IsAny <string>(), MessageBoxButton.YesNo, MessageBoxImage.Question))
            .Returns(MessageBoxResult.No);
            firstViewModel.MessageBoxService = mock.Object;
            firstViewModel.ShowSecondViewCommand.Execute(true);
            Assert.AreEqual(firstViewModel, mainViewModel.CurrentViewModel);

            // we are in FirstViewModel, we click "Navigate to second" and in the messagebox we click Yes
            mock = new Mock <IMessageBoxService>();
            mock.Setup(messageBox => messageBox.Show(It.IsAny <string>(), It.IsAny <string>(), MessageBoxButton.YesNo, MessageBoxImage.Question))
            .Returns(MessageBoxResult.Yes);
            firstViewModel.MessageBoxService = mock.Object;
            firstViewModel.ShowSecondViewCommand.Execute(true);
            Assert.AreEqual(secondViewModel, mainViewModel.CurrentViewModel);
        }
コード例 #3
0
        public void NavigateBack(ThirdViewModel fromViewModel, ResultCode resultCode, FlowResult result)
        {
            var thirdViewController            = NavigationViewProvider.GetViewController <ThirdViewController, ThirdViewModel>(fromViewModel);
            var customFlowNavigationController = (CustomFlowNavigationController)thirdViewController.NavigationController;

            NavigateBack(customFlowNavigationController, resultCode, result, true);
        }
コード例 #4
0
    public void SwitchToThirdView(object sender, outedEventArgs e)
    {
        var view  = new ThirdView();
        var model = new ThirdViewModel(this);

        view.DataContext    = model;
        MainContent.Content = view;
    }
コード例 #5
0
 public MainWindowViewModel(FirstViewModel firstViewModel, SecondViewModel secondViewModel, ThirdViewModel thirdViewModel)
 {
     _firstViewModel       = firstViewModel;
     _secondViewModel      = secondViewModel;
     _thirdViewModel       = thirdViewModel;
     ShowFirstViewCommand  = new RelayCommand(ShowFirstView);
     ShowSecondViewCommand = new RelayCommand(ShowSecondView);
     ShowThirdViewCommand  = new RelayCommand(ShowThirdView);
     ShowFirstView();
     Messenger.Default.Register <ChangePage>(this, ChangePage);
 }
コード例 #6
0
        public ThirdPage()
        {
            InitializeComponent();

            //NavBarItems = new List<NavBarItem>
            //{
            //    new NavBarItem
            //    {
            //        Icon = "playlist_edit"
            //    }
            //};

            BindingContext = new ThirdViewModel();
        }
コード例 #7
0
        public void TestSecondViewModelAndThirdViewModelNavigation()
        {
            var firstViewModel  = new FirstViewModel(null);
            var secondViewModel = new SecondViewModel();
            var thirdViewModel  = new ThirdViewModel();
            MainWindowViewModel mainViewModel = new MainWindowViewModel(firstViewModel, secondViewModel, thirdViewModel);

            mainViewModel.CurrentViewModel = secondViewModel;

            secondViewModel.ShowThirdViewCommand.Execute(null);
            Assert.AreEqual(thirdViewModel, mainViewModel.CurrentViewModel);

            thirdViewModel.ShowFirstViewCommand.Execute(null);
            Assert.AreEqual(firstViewModel, mainViewModel.CurrentViewModel);
        }
コード例 #8
0
        public ViewModelLocator()
        {
            navigationService = new NavigationService();

            appViewModel    = new AppViewModel(navigationService);
            firstViewModel  = new FirstViewModel();
            secondViewModel = new SecondViewModel(navigationService);
            thirdViewModel  = new ThirdViewModel();

            navigationService.Register("First", firstViewModel);
            navigationService.Register("Second", secondViewModel);
            navigationService.Register("Third", thirdViewModel);

            navigationService.Navigate("First");
        }
コード例 #9
0
        public MainWindowViewModel(
            FirstViewModel firstViewModel,
            SecondViewModel secondViewModel,
            ThirdViewModel thirdViewModel,
            IMessenger messenger)
        {
            _firstViewModel  = firstViewModel;
            _secondViewModel = secondViewModel;
            _thirdViewModel  = thirdViewModel;
            _messenger       = messenger;

            messenger.Register <ChangePageMessage>(this, ChangePage);
            ShowFirstViewCommand  = new RelayCommand(ShowFirstView);
            ShowSecondViewCommand = new RelayCommand(ShowSecondView);
            ShowThirdViewCommand  = new RelayCommand(ShowThirdView);
        }
コード例 #10
0
 public void NavigateBack(ThirdViewModel fromViewModel, ResultCode resultCode, FlowResult result)
 {
     NavigateBack <FlowResult>(fromViewModel, resultCode, result);
 }