using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace InABox.DynamicGrid { /// /// Interaction logic for VerticalDynamicEditorGridLayout.xaml /// public partial class VerticalDynamicEditorGridLayout : DynamicEditorGridLayout { public override bool TabStripVisible { get { return Editors.TabStripVisible; } set { Editors.TabStripVisible = value; } } public VerticalDynamicEditorGridLayout() { InitializeComponent(); } public override void LoadPages(IEnumerable pages) { Editors.Items.Clear(); OtherPages.Items.Clear(); foreach (var page in pages.OrderBy(x => x.PageType).ThenBy(x => x.Order()).ThenBy(x => x.Caption())) { var tab = new DynamicTabItem(); tab.Header = page.Caption(); if (page is FrameworkElement element) element.Margin = new Thickness(0, 2, 0, 0); tab.Content = page; if(page is DynamicEditorGrid.DynamicEditPage) { Editors.Items.Add(tab); } else { OtherPages.Items.Add(tab); } } Editors.SelectedIndex = 0; } private bool bChanging; private void Editors_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (bChanging) return; if ((e.OriginalSource != Editors && e.OriginalSource != OtherPages) || e.OriginalSource is not DynamicTabControl tabControl) return; if (tabControl.SelectedItem is not DynamicTabItem tab) return; bChanging = true; try { if (tab is not null && tab.Content is IDynamicEditorPage page) { SelectPage(page); } } finally { bChanging = false; } } private void Grid_SizeChanged(object sender, SizeChangedEventArgs e) { EditorRow.MaxHeight = e.NewSize.Height - 50; } } }