/// <summary> /// Gets the state of a TabablzControl so that it can be serialized. /// </summary> /// <typeparam name="TTabModel">The type of tab model</typeparam> /// <typeparam name="TTabViewModel">The type of tab view model, currently displayed in the app.</typeparam> /// <param name="tabablzControl">The control to be </param> /// <param name="tabContentModelConverter">The converter that transforms tab view models to models</param> /// <returns>The state of the tab set</returns> public static TabSetState <TTabModel> GetTabSetState <TTabModel, TTabViewModel> (TabablzControl tabablzControl, Func <TTabViewModel, TTabModel> tabContentModelConverter) { var tabItems = tabablzControl.GetOrderedItems( ).Cast <TTabViewModel> ( ).Select(tabContentModelConverter).ToArray( ); var selectedIndex = (int?)tabablzControl.SelectedIndex; if (selectedIndex == -1) { selectedIndex = null; } return(new TabSetState <TTabModel> (tabItems, selectedIndex)); }