Пример #1
0
        public void ComplexTest1()
        {
            TabViewModel        tab1VM        = null;
            TabViewModel        tab2VM        = null;
            TabContentViewModel tab1ContentVM = null;
            TabContentViewModel tab2ContentVM = null;

            ViewInjectionManager.Default.Inject("mainRegion", "tab1", () => tab1VM = new TabViewModel()
            {
                RegionName = "tab1ContentRegion"
            }, typeof(TabView));
            ViewInjectionManager.Default.Inject("mainRegion", "tab2", () => tab2VM = new TabViewModel()
            {
                RegionName = "tab2ContentRegion"
            }, typeof(TabView));
            ViewInjectionManager.Default.Inject("tab1ContentRegion", "tab1Content", () => tab1ContentVM = new TabContentViewModel(), typeof(TabContentView));
            ViewInjectionManager.Default.Inject("tab2ContentRegion", "tab2Content", () => tab2ContentVM = new TabContentViewModel(), typeof(TabContentView));

            TabControl           tabControl  = new TabControl();
            ViewInjectionService mainService = new ViewInjectionService()
            {
                RegionName = "mainRegion"
            };

            Interaction.GetBehaviors(tabControl).Add(mainService);
            Window.Content = tabControl;

            EnqueueShowWindow();
            EnqueueCallback(() => {
                Assert.AreEqual(1, tab1VM.NavigatedCount);
                Assert.AreEqual(0, tab1ContentVM.NavigatedCount);
                Assert.IsNull(tab2ContentVM);
                LayoutTreeHelper.GetVisualChildren(tabControl).OfType <TabContentView>().First(x => x.DataContext == tab1ContentVM);

                ViewInjectionManager.Default.Navigate("tab2ContentRegion", "tab2Content");
            });
            EnqueueWindowUpdateLayout();
            EnqueueCallback(() => {
                Assert.AreEqual(1, tab1VM.NavigatedCount);
                Assert.AreEqual(0, tab1ContentVM.NavigatedCount);
                Assert.IsNull(tab2ContentVM);

                ViewInjectionManager.Default.Navigate("mainRegion", "tab2");
                ViewInjectionManager.Default.Navigate("tab2ContentRegion", "tab2Content");
            });
            EnqueueWindowUpdateLayout();
            EnqueueCallback(() => {
                Assert.AreEqual(1, tab1VM.NavigatedCount);
                Assert.AreEqual(1, tab1VM.NavigatedAwayCount);
                Assert.AreEqual(1, tab2VM.NavigatedCount);
                Assert.AreEqual(0, tab1ContentVM.NavigatedCount);
                Assert.AreEqual(0, tab1ContentVM.NavigatedAwayCount);
                Assert.AreEqual(1, tab2ContentVM.NavigatedCount);
                LayoutTreeHelper.GetVisualChildren(tabControl).OfType <TabContentView>().First(x => x.DataContext == tab2ContentVM);
            });
            EnqueueTestComplete();
        }
Пример #2
0
        private void ShowTab(TabContentViewModel info, bool toForeground)
        {
            var oldInfo = _mainViewModel.Tabs.FirstOrDefault(d => d.Title == info.Title);
            int index;

            if (oldInfo != null)
            {
                index = _mainViewModel.Tabs.IndexOf(oldInfo);
                _mainViewModel.Tabs.RemoveAt(index);
                _mainViewModel.Tabs.Insert(index, info);
            }
            else
            {
                _mainViewModel.Tabs.Add(info);
                index = _mainViewModel.Tabs.Count - 1;
            }

            if (toForeground || _mainViewModel.Tabs.Count == 1)
            {
                _mainViewModel.SelectedIndex = index;
            }
        }
Пример #3
0
 public TabContentView(TabContentViewModel viewModel)
 {
     InitializeComponent();
     DataContext = viewModel;
 }
Пример #4
0
 public TabContentViewModelTests()
 {
     _viewModel       = DependencyResolver.Resolve <TabContentViewModel>();
     _navbarViewModel = DependencyResolver.Resolve <NavbarViewModel>();
 }