using Avalonia.Controls; using Avalonia.Input; using Avalonia.Interactivity; using Avalonia.Platform.Storage; using LanDesktopPLONDS.Installer.ViewModels; namespace LanDesktopPLONDS.Installer.Views; public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } protected override void OnDataContextChanged(EventArgs e) { base.OnDataContextChanged(e); if (DataContext is MainWindowViewModel viewModel) { viewModel.BrowseRequested = BrowseForFolderAsync; } } private async Task BrowseForFolderAsync(string currentPath) { var startFolder = Directory.Exists(currentPath) ? await StorageProvider.TryGetFolderFromPathAsync(currentPath) : null; var result = await StorageProvider.OpenFolderPickerAsync(new FolderPickerOpenOptions { Title = "选择安装位置", AllowMultiple = false, SuggestedStartLocation = startFolder }); return result.Count == 0 ? null : result[0].Path.LocalPath; } private void OnTitleBarPointerPressed(object? sender, PointerPressedEventArgs e) { _ = sender; if (e.GetCurrentPoint(this).Properties.IsLeftButtonPressed) { BeginMoveDrag(e); } } private void OnMinimizeClick(object? sender, RoutedEventArgs e) { _ = sender; _ = e; WindowState = WindowState.Minimized; } private void OnCloseClick(object? sender, RoutedEventArgs e) { _ = sender; _ = e; Close(); } }