private static void PopulateTabControl(TabablzControl tabablzControl, LayoutStructureTabSet layoutStructureTabSet)
        {
            bool wasAnyTabSelected = false;

            foreach (var tabItem in layoutStructureTabSet.TabItems)
            {
                var view = ViewLocator.LocateForModelType(tabItem.ViewModelType, null, null);
                var vm   = typeof(IoC).GetMethod("Get").MakeGenericMethod(tabItem.ViewModelType).Invoke(tabablzControl, new Object[] { null });

                ViewModelBinder.Bind(vm, view, null);
                (tabablzControl.DataContext as ShellViewModel).ActivateItem(vm as IScreen);

                tabablzControl.AddToSource(view);

                if (tabItem.Id == layoutStructureTabSet.SelectedTabItemId)
                {
                    tabablzControl.Dispatcher.BeginInvoke(new System.Action(() =>
                    {
                        tabablzControl.SetCurrentValue(Selector.SelectedItemProperty, view);
                    }), DispatcherPriority.Loaded);
                    wasAnyTabSelected = true;
                }
            }

            if (!wasAnyTabSelected && tabablzControl.Items.Count != 0)
            {
                tabablzControl.Dispatcher.BeginInvoke(new System.Action(() =>
                {
                    tabablzControl.SetCurrentValue(Selector.SelectedItemProperty, tabablzControl.Items.OfType <System.Windows.Controls.UserControl>().First());
                }), DispatcherPriority.Loaded);
                wasAnyTabSelected = true;
            }
        }
        private static void DocumentTabSet(Guid id, TabablzControl tabablzControl, ICollection <LayoutStructureTabSet> layoutStructureTabSets)
        {
            var tabItems = tabablzControl.Items.OfType <UserControl>()
                           .Select(c => new LayoutStructureTabItem(Guid.NewGuid(), ((c.DataContext as NewViewModel)?.ActiveItem != null)
                                                                            ? (c.DataContext as NewViewModel).ActiveItem
                                                                            : c.DataContext)).ToList();
            var selectedTabItemId = tabablzControl.SelectedIndex >= 0 ? tabItems[tabablzControl.SelectedIndex].Id : (Guid?)null;

            var layoutStructureTabSet = new LayoutStructureTabSet(
                id,
                selectedTabItemId,
                tabItems
                );

            layoutStructureTabSets.Add(layoutStructureTabSet);
        }
Esempio n. 3
0
        private void PopulateTabControl(TabablzControl tabablzControl, LayoutStructureTabSet layoutStructureTabSet)
        {
            foreach (var tabItem in layoutStructureTabSet.TabItems)
            {
                var featureFactory         = _featureRegistry[tabItem.FeatureId];
                var tabContentLifetimeHost = featureFactory.RestoreTabContent(tabItem);
                var tabContentContainer    = new TabItemContainer(tabItem.Id, featureFactory.FeatureId, tabContentLifetimeHost, featureFactory);
                tabablzControl.AddToSource(tabContentContainer);

                if (tabContentContainer.TabId == layoutStructureTabSet.SelectedTabItemId)
                {
                    tabablzControl.Dispatcher.BeginInvoke(new Action(() =>
                    {
                        tabablzControl.SetCurrentValue(Selector.SelectedItemProperty, tabContentContainer);
                    }), DispatcherPriority.Loaded);
                }
            }
        }