private void SetFullScreen() { object parent = VisualTreeHelper.GetParent((DependencyObject)this); while (parent != null) { BaseCodePageContainer container = parent as BaseCodePageContainer; if (container != null) { _containerGrid.Children.Remove(_webView); container.FullScreenObject = new Tuple <UIElement, Action <UIElement> >(_webView, callback => { _webView = callback as WebView; _containerGrid.Children.Add(_webView); }); container.IsFullScreen = true; break; } else { parent = VisualTreeHelper.GetParent((DependencyObject)parent); } } if (parent == null) { throw new ArgumentException("Page must be of type BaseCodePageContainer"); } }
/// <summary> /// Handles setting the page content /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private static void OnContentChanged(Object sender, DependencyPropertyChangedEventArgs args) { BaseCodePageContainer container = sender as BaseCodePageContainer; if (container != null) { container.Content = container.PageContent; } }
/// <summary> /// Toggles the fullscreen functionality /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private static void OnIsFullScreenChanged(Object sender, DependencyPropertyChangedEventArgs args) { BaseCodePageContainer container = sender as BaseCodePageContainer; if (container != null) { ToggleFullScreen(container); } }
/// <summary> /// Toggles between full screen and standard screen sizes /// </summary> /// <param name="container"></param> private static void ToggleFullScreen(BaseCodePageContainer container) { if (container.IsFullScreen) { if (container.FullScreenObject != null) { ApplicationView.GetForCurrentView().TryEnterFullScreenMode(); container.fullScreenGrid = new Grid(); container.fullScreenGrid.HorizontalAlignment = HorizontalAlignment.Stretch; container.fullScreenGrid.VerticalAlignment = VerticalAlignment.Stretch; Button exitFullScreenButton = new Button() { Content = "Exit Fullscreen" }; exitFullScreenButton.Click += (s, a) => { container.IsFullScreen = false; container.fullScreenGrid.Children.Remove(container.FullScreenObject.Item1); container.FullScreenObject.Item2.Invoke(container.FullScreenObject.Item1); }; GridLength gl1 = new GridLength(.95, GridUnitType.Star); GridLength gl2 = new GridLength(.05, GridUnitType.Star); container.fullScreenGrid.RowDefinitions.Add(new RowDefinition() { Height = gl1 }); container.fullScreenGrid.RowDefinitions.Add(new RowDefinition() { Height = gl2 }); Grid.SetRow(container.FullScreenObject.Item1 as FrameworkElement, 0); Grid.SetRow(exitFullScreenButton, 1); container.fullScreenGrid.Children.Add(container.FullScreenObject.Item1); container.fullScreenGrid.Children.Add(exitFullScreenButton); container.Content = container.fullScreenGrid; } } else { if (container.PageContent != null) { if (!container.IsApplicationFullScreenDefault) { ApplicationView.GetForCurrentView().ExitFullScreenMode(); } container.Content = container.PageContent; } } }