/// <summary> /// Die anzuzeigende Seite wechseln /// Erstellt neue Instanzen anstatt existierende wieder zu verwenden, da es Probleme mit dem .net Framework gab /// </summary> /// <param name="label">Der Titel der neuen Seite</param> /// <param name="pageType">Der Typ der neuen Seite</param> /// <param name="args">Parameter für den Konstruktor der neuen Seite</param> public void switchPage(string label, Type pageType, params object[] args) { try { KPage page = (KPage)Activator.CreateInstance(pageType, args); Frame frame = new Frame(); Toolbar toolbar = new Toolbar(frame, page); ScrollableFrame scrollableFrame = new ScrollableFrame(); ExtScrollViewer extScrollViewer = scrollableFrame.createScrollableFrame(frame); frame.Margin = new Thickness(15, 0, 0, 0); DockPanel.SetDock(toolbar.dpToolbarPanel, Dock.Top); frame.Content = page; page.parentFrame = frame; page.parentToolbar = toolbar; page.parentScrollViewer = extScrollViewer; page.defineToolbarContent(); this.contentPanel.Children.Clear(); this.contentPanel.Children.Add(toolbar.dpToolbarPanel); this.contentPanel.Children.Add(extScrollViewer); this.lbPageTitle.Content = label; } catch { } }
/// <summary> /// Hole eine KPage Instanz aus den Tabs eines TabControls /// </summary> /// <typeparam name="T">Normalerweise ein KPage-Typ</typeparam> /// <returns>Die gesuchte KPage-Instanz</returns> public T getPageFromTabs <T>() { try { if (parentTabControl == null) { //return default(T); // null throw new Exception("You tried to get pages from a TabControl that was not initialized. Check if the parentTabControl of the calling KPanel class really is being initialized"); } foreach (TabItem t in this.parentTabControl.Items) // iteriere über alle tabs { DockPanel pageWrapper = t.Content as DockPanel; // ein tab beinhaltet ein pageWrapper DockPanel welches die Toolbar und den ExtScrollViewer / Frame beinhaltet foreach (var x in pageWrapper.Children) // iteriere über den pageWrapper { if (x.GetType() == typeof(ExtScrollViewer)) // wir suchen den ExtScrollViewer { ExtScrollViewer s = x as ExtScrollViewer; if (s.Content.GetType() == typeof(Frame)) // normalerweise ist der content von ExtScrollViewer ein Frame { Frame f = s.Content as Frame; // hole den Frame if (f.Content.GetType() == typeof(T)) // versichern, dass im frame wirklich eine Instanz des gewünschten Typs ist { T page = (T)(f.Content); // hole die gesuchte Instanz return(page); } } } } } return(default(T)); // null } catch { return(default(T)); // null } }