using System.Windows.Controls; using CommunityToolkit.Mvvm.Messaging; using ExcelHelper.Message; using ExcelHelper.Views.ViewModels; namespace ExcelHelper.Views.Pages; /// /// ImportExcelPage.xaml 的交互逻辑 /// public partial class ImportExcelPage : Page, IView, IRecipient { private readonly ImportViewModel ViewModel; public ImportExcelPage(ImportViewModel viewModel) { InitializeComponent(); this.DataContext = ViewModel = viewModel; ViewModel.IsActive = true; // Register a message in some module WeakReferenceMessenger.Default.Register(this, (r, message) => { if (message.Value != null) { ExcelDataPreviewGrid.Columns.Clear(); foreach (var column in message.Value) { ExcelDataPreviewGrid.Columns.Add(column); } } }); DropFileMask.Visibility = System.Windows.Visibility.Visible; } private void Grid_DragEnter(object sender, System.Windows.DragEventArgs e) { if (e.Data.GetDataPresent(System.Windows.DataFormats.FileDrop)) { e.Effects = System.Windows.DragDropEffects.Link; } else { e.Effects = System.Windows.DragDropEffects.None; } DropFileMask.Visibility = System.Windows.Visibility.Visible; } private void Grid_Drop(object sender, System.Windows.DragEventArgs e) { DropFileMask.Visibility = System.Windows.Visibility.Collapsed; if (e.Data.GetDataPresent(System.Windows.DataFormats.FileDrop)) { var files = (string[])e.Data.GetData(System.Windows.DataFormats.FileDrop); if (files.Length > 0) { ViewModel.FileDrop(files); } } } private void Grid_DragLeave(object sender, System.Windows.DragEventArgs e) { DropFileMask.Visibility = System.Windows.Visibility.Collapsed; } void IRecipient.Receive(UpdateDataGridColumnsMessage message) { if (message.Value != null) { ExcelDataPreviewGrid.Columns.Clear(); foreach (var column in message.Value) { ExcelDataPreviewGrid.Columns.Add(column); } } } }