public Form Tabs(params InitializeTabDelegate[] tabs)
        {
            var tc = new Avalonia.Controls.TabControl();

            foreach (var newTabInitFunction in tabs)
            {
                var tabCreateInfo = new model.TabCreationInfo();
                newTabInitFunction(tabCreateInfo);

                addTabToTabControl(tc, tabCreateInfo);
            }

            AddRowToHost(tc, rowAutoHeight: false);

            return(this);
        }
        private void addTabToTabControl(TabControl tc, model.TabCreationInfo tabCreator)
        {
            var items = tc.Items.Cast <object>().ToList();
            var tab   = new Avalonia.Controls.TabItem();

            if (tabCreator.PopulateHeader != null)
            {
                // use a template header
                var headerForm = new Form(_parentForm: this);
                tabCreator.PopulateHeader(headerForm);

                tab.Header = headerForm.Host;
            }
            else
            {
                tab.Header = tabCreator.Header;
            }

            var itemForm = new Form(_parentForm: this);

            tabCreator.Populate(itemForm);
            tab.Content = itemForm.Host;

            items.Add(tab);
            tc.Items = items;
        }