Skip to content

Commit af5b5c5

Browse files
committed
改进分屏功能
1 parent 5ec70c6 commit af5b5c5

File tree

2 files changed

+43
-36
lines changed

2 files changed

+43
-36
lines changed

Pages/WebViewPage.xaml

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@
3030
Key="Left" Modifiers="Menu"
3131
IconGlyph=""
3232
ButtonClicked="UriGoBackRequest"
33-
IsEnabled="{Binding ElementName=EdgeWebViewEngine, Path=CanGoBack, Mode=TwoWay}"/>
33+
IsEnabled="{Binding ElementName=WebViewEngine, Path=CanGoBack, Mode=TwoWay}"/>
3434
<local:IconButton
3535
TipText="继续 (Alt+向右键)"
3636
Key="Right" Modifiers="Menu"
3737
IconGlyph="&#xe72a;"
3838
ButtonClicked="UriGoForwardRequest"
39-
Visibility="{Binding ElementName=EdgeWebViewEngine, Path=CanGoForward, Mode=TwoWay}"/>
39+
Visibility="{Binding ElementName=WebViewEngine, Path=CanGoForward, Mode=TwoWay}"/>
4040
<local:IconButton
4141
TipText="刷新 (Ctrl+R)"
4242
Key="R" Modifiers="Control"
@@ -66,18 +66,18 @@
6666

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

69-
<WebView2 Name="EdgeWebViewEngine" CoreWebView2Initialized="WebView2Initialized" Grid.Row="2"/>
70-
71-
<Grid
72-
x:Name="splitGrid"
73-
Grid.Row="2"
74-
Visibility="Collapsed">
69+
<Grid Grid.Row="2">
7570
<Grid.ColumnDefinitions>
76-
<ColumnDefinition />
77-
<ColumnDefinition />
71+
<ColumnDefinition x:Name="leftColumn" Width="*" />
72+
<ColumnDefinition x:Name="rightColumn" Width="0" />
7873
</Grid.ColumnDefinitions>
7974

80-
<WebView2 Source="https://www.bing.com/" Grid.Column="1" />
75+
<WebView2 x:Name="WebViewEngine" CoreWebView2Initialized="WebView2Initialized" />
76+
<WebView2
77+
x:Name="RightWebView"
78+
Visibility="Collapsed"
79+
CoreWebView2Initialized="WebView2Initialized"
80+
Grid.Column="1" />
8181
<controls:GridSplitter
8282
Grid.Column="1"
8383
Width="16"
@@ -91,11 +91,14 @@
9191
</Grid>
9292

9393
<Border
94-
Background="{ThemeResource LayerOnMicaBaseAltFillColorTertiaryBrush}" CornerRadius="{ThemeResource ControlCornerRadius}"
95-
MaxWidth="400" Height="24" Grid.Row="2"
94+
Grid.Row="2"
95+
Background="{ThemeResource LayerOnMicaBaseAltFillColorTertiaryBrush}"
96+
CornerRadius="{ThemeResource ControlCornerRadius}"
97+
MaxWidth="400"
9698
HorizontalAlignment="Left" VerticalAlignment="Bottom">
9799
<TextBlock
98-
Name="uriPreview" TextTrimming="CharacterEllipsis" FontSize="12"
100+
Name="uriPreview" TextTrimming="CharacterEllipsis"
101+
Margin="0,5,0,5"
99102
VerticalAlignment="Center"/>
100103
</Border>
101104
</Grid>

Pages/WebViewPage.xaml.cs

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public WebViewPage(Uri WebUri)
1818
{
1919
InitializeComponent();
2020
InitializeToolbarVisibility();
21-
EdgeWebViewEngine.Source = WebUri;
21+
WebViewEngine.Source = WebUri;
2222
}
2323

2424
private void InitializeToolbarVisibility()
@@ -28,7 +28,7 @@ private void InitializeToolbarVisibility()
2828

2929
private void WebView2Initialized(WebView2 sender, CoreWebView2InitializedEventArgs args)
3030
{
31-
sender.CoreWebView2.ContextMenuRequested += CoreWebView2_ContextMenuRequested;
31+
sender.CoreWebView2.ContextMenuRequested += (s, args) => CoreWebView2_ContextMenuRequested(sender, s, args);
3232
sender.CoreWebView2.DocumentTitleChanged += CoreWebView2_DocumentTitleChanged;
3333
sender.CoreWebView2.DOMContentLoaded += CoreWebView2_DOMContentLoaded;
3434
sender.CoreWebView2.DownloadStarting += CoreWebView2_DownloadStarting;
@@ -170,19 +170,19 @@ private async void CoreWebView2_ScriptDialogOpening(CoreWebView2 sender, CoreWeb
170170
}
171171
}
172172

173-
private void CoreWebView2_ContextMenuRequested(CoreWebView2 sender, CoreWebView2ContextMenuRequestedEventArgs args)
173+
private void CoreWebView2_ContextMenuRequested(UIElement element, CoreWebView2 sender, CoreWebView2ContextMenuRequestedEventArgs args)
174174
{
175175
args.Handled = true;
176176
var deferral = args.GetDeferral();
177177
var menuFlyout = new MenuFlyout();
178178

179-
PopulateContextMenuItems(args, args.MenuItems, menuFlyout.Items);
179+
CreateMenuItems(args, args.MenuItems, menuFlyout.Items);
180180

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

185-
private void PopulateContextMenuItems(CoreWebView2ContextMenuRequestedEventArgs args, IList<CoreWebView2ContextMenuItem> webMenuItems, IList<MenuFlyoutItemBase> menuItems)
185+
private void CreateMenuItems(CoreWebView2ContextMenuRequestedEventArgs args, IList<CoreWebView2ContextMenuItem> webMenuItems, IList<MenuFlyoutItemBase> menuItems)
186186
{
187187
foreach (var menuItem in webMenuItems)
188188
{
@@ -206,7 +206,7 @@ private MenuFlyoutSubItem CreateSubMenuItem(CoreWebView2ContextMenuRequestedEven
206206
IsEnabled = menuItem.IsEnabled
207207
};
208208

209-
PopulateContextMenuItems(args, menuItem.Children, subItem.Items);
209+
CreateMenuItems(args, menuItem.Children, subItem.Items);
210210
return subItem;
211211
}
212212

@@ -286,15 +286,15 @@ private void CoreWebView2_NewWindowRequested(CoreWebView2 sender, CoreWebView2Ne
286286

287287
private void UriGoBackRequest(object sender, RoutedEventArgs e)
288288
{
289-
if (EdgeWebViewEngine.CanGoBack) EdgeWebViewEngine.GoBack();
289+
if (WebViewEngine.CanGoBack) WebViewEngine.GoBack();
290290
}
291291

292292
private void UriGoForwardRequest(object sender, RoutedEventArgs e)
293293
{
294-
if (EdgeWebViewEngine.CanGoForward) EdgeWebViewEngine.GoForward();
294+
if (WebViewEngine.CanGoForward) WebViewEngine.GoForward();
295295
}
296296

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

299299
public void ShowHomePage(object sender, RoutedEventArgs e)
300300
{
@@ -307,11 +307,11 @@ public void ShowFlyout(string name)
307307
toolBar.ShowFlyout(name);
308308
}
309309

310-
public WebView2 WebView2 => EdgeWebViewEngine;
310+
public WebView2 WebView2 => WebViewEngine;
311311

312312
private void FavoriteStateChanged(object sender, RoutedEventArgs e)
313313
{
314-
WebsiteInfo info = App.settings.Favorites.FirstOrDefault(x => x.Uri.Equals(EdgeWebViewEngine.Source));
314+
WebsiteInfo info = App.settings.Favorites.FirstOrDefault(x => x.Uri.Equals(WebViewEngine.Source));
315315
if (info != null)
316316
{
317317
App.settings.Favorites.Remove(info);
@@ -321,9 +321,9 @@ private void FavoriteStateChanged(object sender, RoutedEventArgs e)
321321
{
322322
WebsiteInfo newInfo = new()
323323
{
324-
Name = EdgeWebViewEngine.CoreWebView2.DocumentTitle,
325-
Icon = EdgeWebViewEngine.CoreWebView2.FaviconUri,
326-
Uri = EdgeWebViewEngine.Source
324+
Name = WebViewEngine.CoreWebView2.DocumentTitle,
325+
Icon = WebViewEngine.CoreWebView2.FaviconUri,
326+
Uri = WebViewEngine.Source
327327
};
328328
App.settings.Favorites.Add(newInfo);
329329
InFavoriteList = true;
@@ -345,14 +345,18 @@ private void SetFavoriteIcon()
345345

346346
public void CreateSplitWindow()
347347
{
348-
EdgeWebViewEngine.Visibility = Visibility.Collapsed;
349-
WebView2 webView2 = new()
348+
leftColumn.Width = new GridLength(1, GridUnitType.Star);
349+
if (RightWebView.Visibility == Visibility.Collapsed)
350350
{
351-
Source = EdgeWebViewEngine.Source
352-
};
353-
splitGrid.Children.Add(webView2);
354-
Grid.SetColumn(webView2, 0);
355-
splitGrid.Visibility = Visibility.Visible;
351+
rightColumn.Width = new GridLength(1, GridUnitType.Star);
352+
RightWebView.Source = new("https://www.bing.com/");
353+
RightWebView.Visibility = Visibility.Visible;
354+
}
355+
else
356+
{
357+
rightColumn.Width = new GridLength(0);
358+
RightWebView.Visibility = Visibility.Collapsed;
359+
}
356360
}
357361
}
358362
}

0 commit comments

Comments
 (0)