Skip to content

Commit

Permalink
改进分屏功能
Browse files Browse the repository at this point in the history
  • Loading branch information
wtcpython committed Feb 14, 2025
1 parent 5ec70c6 commit af5b5c5
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 36 deletions.
31 changes: 17 additions & 14 deletions Pages/WebViewPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@
Key="Left" Modifiers="Menu"
IconGlyph=""
ButtonClicked="UriGoBackRequest"
IsEnabled="{Binding ElementName=EdgeWebViewEngine, Path=CanGoBack, Mode=TwoWay}"/>
IsEnabled="{Binding ElementName=WebViewEngine, Path=CanGoBack, Mode=TwoWay}"/>
<local:IconButton
TipText="继续 (Alt+向右键)"
Key="Right" Modifiers="Menu"
IconGlyph="&#xe72a;"
ButtonClicked="UriGoForwardRequest"
Visibility="{Binding ElementName=EdgeWebViewEngine, Path=CanGoForward, Mode=TwoWay}"/>
Visibility="{Binding ElementName=WebViewEngine, Path=CanGoForward, Mode=TwoWay}"/>
<local:IconButton
TipText="刷新 (Ctrl+R)"
Key="R" Modifiers="Control"
Expand Down Expand Up @@ -66,18 +66,18 @@

<local:FavoriteList Grid.Row="1"/>

<WebView2 Name="EdgeWebViewEngine" CoreWebView2Initialized="WebView2Initialized" Grid.Row="2"/>

<Grid
x:Name="splitGrid"
Grid.Row="2"
Visibility="Collapsed">
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition x:Name="leftColumn" Width="*" />
<ColumnDefinition x:Name="rightColumn" Width="0" />
</Grid.ColumnDefinitions>

<WebView2 Source="https://www.bing.com/" Grid.Column="1" />
<WebView2 x:Name="WebViewEngine" CoreWebView2Initialized="WebView2Initialized" />
<WebView2
x:Name="RightWebView"
Visibility="Collapsed"
CoreWebView2Initialized="WebView2Initialized"
Grid.Column="1" />
<controls:GridSplitter
Grid.Column="1"
Width="16"
Expand All @@ -91,11 +91,14 @@
</Grid>

<Border
Background="{ThemeResource LayerOnMicaBaseAltFillColorTertiaryBrush}" CornerRadius="{ThemeResource ControlCornerRadius}"
MaxWidth="400" Height="24" Grid.Row="2"
Grid.Row="2"
Background="{ThemeResource LayerOnMicaBaseAltFillColorTertiaryBrush}"
CornerRadius="{ThemeResource ControlCornerRadius}"
MaxWidth="400"
HorizontalAlignment="Left" VerticalAlignment="Bottom">
<TextBlock
Name="uriPreview" TextTrimming="CharacterEllipsis" FontSize="12"
Name="uriPreview" TextTrimming="CharacterEllipsis"
Margin="0,5,0,5"
VerticalAlignment="Center"/>
</Border>
</Grid>
Expand Down
48 changes: 26 additions & 22 deletions Pages/WebViewPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public WebViewPage(Uri WebUri)
{
InitializeComponent();
InitializeToolbarVisibility();
EdgeWebViewEngine.Source = WebUri;
WebViewEngine.Source = WebUri;
}

private void InitializeToolbarVisibility()
Expand All @@ -28,7 +28,7 @@ private void InitializeToolbarVisibility()

private void WebView2Initialized(WebView2 sender, CoreWebView2InitializedEventArgs args)
{
sender.CoreWebView2.ContextMenuRequested += CoreWebView2_ContextMenuRequested;
sender.CoreWebView2.ContextMenuRequested += (s, args) => CoreWebView2_ContextMenuRequested(sender, s, args);
sender.CoreWebView2.DocumentTitleChanged += CoreWebView2_DocumentTitleChanged;
sender.CoreWebView2.DOMContentLoaded += CoreWebView2_DOMContentLoaded;
sender.CoreWebView2.DownloadStarting += CoreWebView2_DownloadStarting;
Expand Down Expand Up @@ -170,19 +170,19 @@ private async void CoreWebView2_ScriptDialogOpening(CoreWebView2 sender, CoreWeb
}
}

private void CoreWebView2_ContextMenuRequested(CoreWebView2 sender, CoreWebView2ContextMenuRequestedEventArgs args)
private void CoreWebView2_ContextMenuRequested(UIElement element, CoreWebView2 sender, CoreWebView2ContextMenuRequestedEventArgs args)
{
args.Handled = true;
var deferral = args.GetDeferral();
var menuFlyout = new MenuFlyout();

PopulateContextMenuItems(args, args.MenuItems, menuFlyout.Items);
CreateMenuItems(args, args.MenuItems, menuFlyout.Items);

menuFlyout.Closed += (s, e) => deferral.Complete();
menuFlyout.ShowAt(EdgeWebViewEngine, args.Location);
menuFlyout.ShowAt(element, args.Location);
}

private void PopulateContextMenuItems(CoreWebView2ContextMenuRequestedEventArgs args, IList<CoreWebView2ContextMenuItem> webMenuItems, IList<MenuFlyoutItemBase> menuItems)
private void CreateMenuItems(CoreWebView2ContextMenuRequestedEventArgs args, IList<CoreWebView2ContextMenuItem> webMenuItems, IList<MenuFlyoutItemBase> menuItems)
{
foreach (var menuItem in webMenuItems)
{
Expand All @@ -206,7 +206,7 @@ private MenuFlyoutSubItem CreateSubMenuItem(CoreWebView2ContextMenuRequestedEven
IsEnabled = menuItem.IsEnabled
};

PopulateContextMenuItems(args, menuItem.Children, subItem.Items);
CreateMenuItems(args, menuItem.Children, subItem.Items);
return subItem;
}

Expand Down Expand Up @@ -286,15 +286,15 @@ private void CoreWebView2_NewWindowRequested(CoreWebView2 sender, CoreWebView2Ne

private void UriGoBackRequest(object sender, RoutedEventArgs e)
{
if (EdgeWebViewEngine.CanGoBack) EdgeWebViewEngine.GoBack();
if (WebViewEngine.CanGoBack) WebViewEngine.GoBack();
}

private void UriGoForwardRequest(object sender, RoutedEventArgs e)
{
if (EdgeWebViewEngine.CanGoForward) EdgeWebViewEngine.GoForward();
if (WebViewEngine.CanGoForward) WebViewEngine.GoForward();
}

private void UriRefreshRequest(object sender, RoutedEventArgs e) => EdgeWebViewEngine.Reload();
private void UriRefreshRequest(object sender, RoutedEventArgs e) => WebViewEngine.Reload();

public void ShowHomePage(object sender, RoutedEventArgs e)
{
Expand All @@ -307,11 +307,11 @@ public void ShowFlyout(string name)
toolBar.ShowFlyout(name);
}

public WebView2 WebView2 => EdgeWebViewEngine;
public WebView2 WebView2 => WebViewEngine;

private void FavoriteStateChanged(object sender, RoutedEventArgs e)
{
WebsiteInfo info = App.settings.Favorites.FirstOrDefault(x => x.Uri.Equals(EdgeWebViewEngine.Source));
WebsiteInfo info = App.settings.Favorites.FirstOrDefault(x => x.Uri.Equals(WebViewEngine.Source));
if (info != null)
{
App.settings.Favorites.Remove(info);
Expand All @@ -321,9 +321,9 @@ private void FavoriteStateChanged(object sender, RoutedEventArgs e)
{
WebsiteInfo newInfo = new()
{
Name = EdgeWebViewEngine.CoreWebView2.DocumentTitle,
Icon = EdgeWebViewEngine.CoreWebView2.FaviconUri,
Uri = EdgeWebViewEngine.Source
Name = WebViewEngine.CoreWebView2.DocumentTitle,
Icon = WebViewEngine.CoreWebView2.FaviconUri,
Uri = WebViewEngine.Source
};
App.settings.Favorites.Add(newInfo);
InFavoriteList = true;
Expand All @@ -345,14 +345,18 @@ private void SetFavoriteIcon()

public void CreateSplitWindow()
{
EdgeWebViewEngine.Visibility = Visibility.Collapsed;
WebView2 webView2 = new()
leftColumn.Width = new GridLength(1, GridUnitType.Star);
if (RightWebView.Visibility == Visibility.Collapsed)
{
Source = EdgeWebViewEngine.Source
};
splitGrid.Children.Add(webView2);
Grid.SetColumn(webView2, 0);
splitGrid.Visibility = Visibility.Visible;
rightColumn.Width = new GridLength(1, GridUnitType.Star);
RightWebView.Source = new("https://www.bing.com/");
RightWebView.Visibility = Visibility.Visible;
}
else
{
rightColumn.Width = new GridLength(0);
RightWebView.Visibility = Visibility.Collapsed;
}
}
}
}

0 comments on commit af5b5c5

Please sign in to comment.