, чтобы получить полезную демонстрацию Tabview и попытаться отобразить страницу WebView2 в каждой области контента TabViewItem. В этой демонстрации WebView2 создается программно в xaml.cs, не объявляется в файле XAML; Только Tabview объявлен в XAML. Я внес некоторые изменения в демонстрацию в надежде отобразить PDF в области под вкладкой. Однако, с текущим кодом, каждый раз, когда WebView2 создается в xaml.cs, его ширина и высота всегда 0.
Чтобы правильно отобразить его, я должен вручную установить ширину и высоту экземпляра WebView2.
/> Это не то, что я хочу. Как я должен изменить свой код для автоматического отображения области WebView2 под строкой вкладок?
< /code>
функция файла файла < /h4>
using Microsoft.UI.Xaml.Controls;
using System;
using System.Diagnostics;
using Windows.Storage;
using Windows.Storage.Pickers;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace TEST
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private async void Tabs_AddTabButtonClick(Microsoft.UI.Xaml.Controls.TabView sender, object args)
{
var openPicker = new FileOpenPicker();
openPicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
openPicker.FileTypeFilter.Add(".pdf");
// choose single file
StorageFile file = await openPicker.PickSingleFileAsync();
if (file != null)
{
sender.TabItems.Add(CreateNewTVI(file.Name, file.Path));
}
}
private TabViewItem CreateNewTVI(string header, string dataContext)
{
WebView2 TabViewWindow = new WebView2()
{
Source = new Uri($"https://bing.com"),
HorizontalAlignment = HorizontalAlignment.Stretch,
VerticalAlignment = VerticalAlignment.Stretch
};
InitializWebView2(TabViewWindow);
var newTab = new TabViewItem()
{
IconSource = new Microsoft.UI.Xaml.Controls.SymbolIconSource()
{
Symbol = Symbol.Placeholder
},
Header = header,
Content = TabViewWindow
};
return newTab;
}
private async void InitializWebView2(WebView2 TabViewWindow)
{
try
{
// Attempt to initialize WebView2
await TabViewWindow.EnsureCoreWebView2Async();
}
catch (Exception ex)
{
// Handle the case where WebView2 initialization fails
// You can log the error or show a message to the user
Debug.WriteLine($"WebView2 initialization failed: {ex.Message}");
}
}
private void Tabs_TabCloseRequested(Microsoft.UI.Xaml.Controls.TabView sender, Microsoft.UI.Xaml.Controls.TabViewTabCloseRequestedEventArgs args)
{
sender.TabItems.Remove(args.Tab);
}
}
}
< /code>
App.xaml
Подробнее здесь: https://stackoverflow.com/questions/796 ... -correctly
Мобильная версия