Skip to content

Commit

Permalink
WPF Example - Implement DisplayHandler.OnFullscreenModeChange
Browse files Browse the repository at this point in the history
- Use the new CefSharp.Handler.DisplayHandler base class
- Update xaml so ChromiumWebBrowser has direct reference to DataContext
- When fullscreen create new window and move the browser, move back when exit fullscreen
  • Loading branch information
amaitland committed May 16, 2021
1 parent e0dab5a commit 842429a
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 55 deletions.
102 changes: 47 additions & 55 deletions CefSharp.Wpf.Example/Handlers/DisplayHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,66 +2,58 @@
//
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.

using CefSharp.Structs;
using CefSharp.Wpf.Example.Views;
using System;
using System.Collections.Generic;
using CursorType = CefSharp.Enums.CursorType;
using Size = CefSharp.Structs.Size;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Media;

namespace CefSharp.Wpf.Example.Handlers
{
public class DisplayHandler : IDisplayHandler
public class DisplayHandler : CefSharp.Handler.DisplayHandler
{

void IDisplayHandler.OnAddressChanged(IWebBrowser chromiumWebBrowser, AddressChangedEventArgs addressChangedArgs)
{

}

bool IDisplayHandler.OnAutoResize(IWebBrowser chromiumWebBrowser, IBrowser browser, Size newSize)
{
return false;
}

bool IDisplayHandler.OnCursorChange(IWebBrowser chromiumWebBrowser, IBrowser browser, IntPtr cursor, CursorType type, CursorInfo customCursorInfo)
{
return false;
}

void IDisplayHandler.OnTitleChanged(IWebBrowser chromiumWebBrowser, TitleChangedEventArgs titleChangedArgs)
{

}

void IDisplayHandler.OnFaviconUrlChange(IWebBrowser chromiumWebBrowser, IBrowser browser, IList<string> urls)
{

}

void IDisplayHandler.OnFullscreenModeChange(IWebBrowser chromiumWebBrowser, IBrowser browser, bool fullscreen)
{

}

void IDisplayHandler.OnLoadingProgressChange(IWebBrowser chromiumWebBrowser, IBrowser browser, double progress)
{

}

bool IDisplayHandler.OnTooltipChanged(IWebBrowser chromiumWebBrowser, ref string text)
{
//text = "Sample text";
return false;
}

void IDisplayHandler.OnStatusMessage(IWebBrowser chromiumWebBrowser, StatusMessageEventArgs statusMessageArgs)
{

}

bool IDisplayHandler.OnConsoleMessage(IWebBrowser chromiumWebBrowser, ConsoleMessageEventArgs consoleMessageArgs)
{
return false;
private Grid parent;
private Window fullScreenWindow;

protected override void OnFullscreenModeChange(IWebBrowser chromiumWebBrowser, IBrowser browser, bool fullscreen)
{
var webBrowser = (ChromiumWebBrowser)chromiumWebBrowser;

webBrowser.Dispatcher.BeginInvoke((Action)(() =>
{
if (fullscreen)
{
//In this example the parent is a Grid, if your parent is a different type
//of control then update this code accordingly.
parent = (Grid)VisualTreeHelper.GetParent(webBrowser);

//NOTE: If the ChromiumWebBrowser instance doesn't have a direct reference to
//the DataContext in this case the BrowserTabViewModel then your bindings won't
//be updated/might cause issues like the browser reloads the Url when exiting
//fullscreen.
parent.Children.Remove(webBrowser);

fullScreenWindow = new Window
{
WindowStyle = WindowStyle.None,
WindowState = WindowState.Maximized,
Content = webBrowser
};

fullScreenWindow.ShowDialog();
}
else
{
fullScreenWindow.Content = null;

parent.Children.Add(webBrowser);

fullScreenWindow.Close();
fullScreenWindow = null;
parent = null;
}
}));
}
}
}
1 change: 1 addition & 0 deletions CefSharp.Wpf.Example/Views/BrowserTabView.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,7 @@
Title="{Binding Title, Mode=OneWayToSource}"
AllowDrop="True"
WebBrowser="{Binding WebBrowser, Mode=OneWayToSource}"
DataContext="{Binding}"
RenderOptions.BitmapScalingMode="{Binding ElementName=scalingModeComboBox, Path=SelectedItem}">
<!-- Just an example of how you may override the BrowserSettings. Disabled by default since it looks so
incredibly ugly... -->
Expand Down

0 comments on commit 842429a

Please sign in to comment.