Я студент и пытаюсь написать читателя WPF PDF на основе Syncfusion и Dragablz, но мой PDF не может правильно представлять в главном окне. Я проверил значение LoadedDocument, и оно ноль. Я спросил ИИ и исключил много проблем, но все еще не могу найти основную причину. Я не участвую в области компьютерных наук и ничего не знаю о вещах C# или WPF, поэтому весь проект был создан с помощью AI, поэтому мне действительно нужна помощь Это код файла mainwindow.xaml:
Я студент и пытаюсь написать читателя WPF PDF на основе Syncfusion и Dragablz, но мой PDF не может правильно представлять в главном окне. Я проверил значение LoadedDocument, и оно ноль. Я спросил ИИ и исключил много проблем, но все еще не могу найти основную причину. Я не участвую в области компьютерных наук и ничего не знаю о вещах C# или WPF, поэтому весь проект был создан с помощью AI, поэтому мне действительно нужна помощь [b] Это код файла mainwindow.xaml: [/b] [code]
< /code>
Это код файла mainwindow.xaml.cs: < /p> using Microsoft.Win32; using Syncfusion.Licensing; using Syncfusion.Pdf.Parsing; // 需要这个用于 PdfLoadedDocument using Syncfusion.Windows.PdfViewer; // 需要这个用于 PdfViewerControl using System; // For Exception using System.IO; // For Path.GetFileName using System.Windows; using System.Windows.Controls; using System.Windows.Input; using Dragablz; // For TabablzControl and ItemActionCallbackArgs using System.Collections.ObjectModel; // For ObservableCollection using System.Linq; using System.Net.Security; using System.Diagnostics; // For Any() and First()
namespace SimplePdfViewer { public partial class MainWindow : Window { public InterTabController InterTabController { get; } = new InterTabController();
public ObservableCollection PdfTabs { get; } = new();
public MainWindow() { InitializeComponent(); this.DataContext = this;
}
private void btnOpen_Click(object sender, RoutedEventArgs e) { var openFileDialog = new OpenFileDialog { Filter = "PDF Files (*.pdf)|*.pdf|All Files (*.*)|*.*", Title = "choose PDF file" }; if (openFileDialog.ShowDialog() == true) { AddPdfTab(openFileDialog.FileName); } }
private void AddPdfTab(string filePath) { // 检查文件是否存在 if (!File.Exists(filePath)) { MessageBox.Show("file does not exist.", "error", MessageBoxButton.OK, MessageBoxImage.Error); return; }
// 检查是否已经打开了该文件,避免重复打开 if (PdfTabs.Any(tab => (tab.ToolTip as string) == filePath)) { var existingTab = PdfTabs.First(tab => (tab.ToolTip as string) == filePath); pdfTabControl.SelectedItem = existingTab; // 切换到已打开的标签页 return; } var pdfViewer = new PdfViewerControl(); try { // 加载 PDF 文件 pdfViewer.Load(filePath); var headerPanel = new StackPanel { Orientation = Orientation.Horizontal }; // 限制文件名长度,避免标签页过长 string fileName = Path.GetFileName(filePath); if (fileName.Length > 25) { fileName = fileName.Substring(0, 22) + "..."; } var fileNameText = new TextBlock { Text = fileName, Margin = new Thickness(0, 0, 4, 0) };
var closeBtn = new Button { Content = "×", Width = 20, Height = 20, Padding = new Thickness(0), Margin = new Thickness(0), VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center };
var tab = new TabItem { Header = headerPanel, Content = pdfViewer, ToolTip = filePath // 使用 ToolTip 存储完整文件路径,方便查找 };