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); }
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); } } }