public async void EnterViewMode(ApplicationViewMode mode) { bool switched = false; if (ApplicationView.GetForCurrentView().IsViewModeSupported(mode)) { switched = await ApplicationView.GetForCurrentView().TryEnterViewModeAsync(mode); } }
private async void AppBarButton_Click(object sender, RoutedEventArgs e) { ApplicationViewMode target = _viewMode == ApplicationViewMode.CompactOverlay ? ApplicationViewMode.Default : ApplicationViewMode.CompactOverlay; _viewMode = target; await ApplicationViewSwitcher.TryShowAsViewModeAsync(ViewID, target); VisualStateManager.GoToState(this, target.ToString(), false); }
public static void HandleTitleBarForGrid(Grid element, ApplicationViewMode mode = ApplicationViewMode.Default) { lock (_handledElements) { //if (_handledElements.Contains(element)) // return; var applicationView = ApplicationView.GetForCurrentView(); var coreApplicationView = CoreApplication.GetCurrentView(); if (ApiInformation.IsTypePresent("Windows.UI.ViewManagement.StatusBar")) { var statusBar = StatusBar.GetForCurrentView(); if (statusBar != null) { var rect = statusBar.OccludedRect; element.Padding = new Thickness(0, rect.Height, 0, 0); } } else { var coreTitleBar = coreApplicationView.TitleBar; // this method captures "element" meaning the GC might not be able to collect it. void UpdateTitleBarLayout(CoreApplicationViewTitleBar titleBar, object ev) { if (applicationView.ViewMode == ApplicationViewMode.CompactOverlay) { element.Padding = new Thickness(titleBar.SystemOverlayLeftInset / 2, 0, titleBar.SystemOverlayRightInset / 2, 0); } else { element.Padding = new Thickness(0, titleBar.Height, 0, 0); } } // i *believe* this handles it? not 100% sure void ElementUnloaded(object sender, RoutedEventArgs e) { coreTitleBar.LayoutMetricsChanged -= UpdateTitleBarLayout; (sender as FrameworkElement).Unloaded -= ElementUnloaded; lock (_handledElements) { _handledElements.Remove(sender as FrameworkElement); } } coreTitleBar.LayoutMetricsChanged += UpdateTitleBarLayout; element.Unloaded += ElementUnloaded; UpdateTitleBarLayout(coreTitleBar, null); } } }
public static async Task OpenChannelWindowAsync(DiscordChannel channel, ApplicationViewMode mode = ApplicationViewMode.Default) { if (!MultipleWindowsSupported) { return; } if (await ActivateOtherWindow(channel)) { return; } var viewId = 0; var coreView = CoreApplication.CreateNewView(); await coreView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { var coreWindow = coreView.CoreWindow; var window = Window.Current; var frame = new Frame(); try { ThemeManager.LoadCurrentTheme(frame.Resources); } catch { } window.Content = frame; window.Activate(); frame.Navigate(typeof(MainPage), new MainPageArgs() { ChannelId = channel.Id, FullFrame = true, ViewMode = mode }); var applicationView = ApplicationView.GetForCurrentView(); viewId = applicationView.Id; void OnConsolidated(ApplicationView sender, ApplicationViewConsolidatedEventArgs args) { if (sender.Id == viewId && sender.Id != _mainWindowId) { if (args.IsAppInitiated) { return; } sender.Consolidated -= OnConsolidated; _windowChannelDictionary.TryRemove(sender.Id, out _); } } applicationView.Consolidated += OnConsolidated; }); //var prefs = ViewModePreferences.CreateDefault(ApplicationViewMode.Default); await ApplicationViewSwitcher.TryShowAsViewModeAsync(viewId, mode); }
private async Task ChangeViewModeAsync(ApplicationViewMode appViewMode) { var bmp = HeroImage.Source as BitmapImage; DefaultAspectRatio = CalculateAspectRatio(bmp.PixelWidth, bmp.PixelHeight); ViewModePreferences compactOptions = ViewModePreferences.CreateDefault(ApplicationViewMode.CompactOverlay); // Maximum size = 500 x 500 // Minuimum size = 150 x 181 // Sometimes not working // (when height > width => in portrait aspect ratio, videos have always landscape aspect ratio // => not a big problem) compactOptions.CustomSize = CalculateNewSize(SavedSize, DefaultAspectRatio); bool modeSwitched = await ApplicationView.GetForCurrentView().TryEnterViewModeAsync(appViewMode, compactOptions); }
// Displays a view in the specified view mode public async Task <ViewLifetimeControl> TryShowAsViewModeAsync(string windowTitle, Type pageType, ApplicationViewMode viewMode = ApplicationViewMode.Default) { ViewLifetimeControl viewControl = await CreateViewLifetimeControlAsync(windowTitle, pageType); SecondaryViews.Add(viewControl); viewControl.StartViewInUse(); var viewShown = await ApplicationViewSwitcher.TryShowAsViewModeAsync(viewControl.Id, viewMode); viewControl.StopViewInUse(); return(viewControl); }
public void ShowViewMode(ApplicationViewMode mode) { WindowManager.ShowViewMode(mode); }
public async Task <ViewLifetimeControl> OpenAsync(Func <ViewLifetimeControl, UIElement> content, object parameter, double width, double height, ApplicationViewMode viewMode) { if (_windows.TryGetValue(parameter, out IDispatcherContext value)) { var newControl = await value.DispatchAsync(async() => { var control = ViewLifetimeControl.GetForCurrentView(); var newAppView = ApplicationView.GetForCurrentView(); var preferences = ViewModePreferences.CreateDefault(viewMode); preferences.CustomSize = new Size(width, height); await ApplicationViewSwitcher .TryShowAsViewModeAsync(newAppView.Id, viewMode, preferences); return(control); }).ConfigureAwait(false); return(newControl); } else { var newView = CoreApplication.CreateNewView(); var dispatcher = new DispatcherContext(newView.Dispatcher); _windows[parameter] = dispatcher; var newControl = await dispatcher.DispatchAsync(async() => { var newWindow = Window.Current; newWindow.Closed += (s, args) => { _windows.TryRemove(parameter, out _); }; newWindow.CoreWindow.Closed += (s, args) => { _windows.TryRemove(parameter, out _); }; var newAppView = ApplicationView.GetForCurrentView(); newAppView.Consolidated += (s, args) => { _windows.TryRemove(parameter, out _); newWindow.Close(); }; if (ApiInformation.IsPropertyPresent("Windows.UI.ViewManagement.ApplicationView", "PersistedStateId")) { newAppView.PersistedStateId = "Calls"; } var control = ViewLifetimeControl.GetForCurrentView(); control.Released += (s, args) => { _windows.TryRemove(parameter, out _); newWindow.Close(); }; newWindow.Content = content(control); newWindow.Activate(); var preferences = ViewModePreferences.CreateDefault(viewMode); preferences.CustomSize = new Size(width, height); await ApplicationViewSwitcher.TryShowAsViewModeAsync(newAppView.Id, viewMode, preferences); return(control); }).ConfigureAwait(false); return(newControl); } }
public async Task <ViewLifetimeControl> TryShowAsViewModeAsync(string windowTitle, Type pageType, ApplicationViewMode viewMode = ApplicationViewMode.Default) { ViewLifetimeControl viewControl = await CreateViewLifetimeControlAsync(windowTitle, pageType); SecondaryViews.Add(viewControl); viewControl.StartViewInUse(); ViewModePreferences compactOptions = ViewModePreferences.CreateDefault(viewMode); compactOptions.CustomSize = MediumSize; var viewShown = await ApplicationViewSwitcher.TryShowAsViewModeAsync(viewControl.Id, viewMode, compactOptions); viewControl.StopViewInUse(); return(viewControl); }