Files
gregExtractor/GUI/MainWindow.axaml.cs
T

52 lines
1.3 KiB
C#

using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Platform.Storage;
using gregExtractor.GUI.ViewModels;
namespace gregExtractor.GUI;
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContextChanged += OnDataContextChanged;
WireDataContext();
}
private void OnDataContextChanged(object? sender, EventArgs eventArgs)
{
WireDataContext();
}
private void WireDataContext()
{
if (DataContext is MainViewModel viewModel)
viewModel.WireBrowseHandler(BrowseFolderAsync);
}
private async Task<string?> BrowseFolderAsync(string? target)
{
IReadOnlyList<IStorageFolder> folders = await StorageProvider.OpenFolderPickerAsync(new FolderPickerOpenOptions
{
AllowMultiple = false,
Title = string.IsNullOrWhiteSpace(target) ? "Select folder" : $"Select folder for {target}",
});
if (folders.Count == 0)
return null;
return folders[0].Path.LocalPath;
}
private void OnMinimizeClicked(object? sender, RoutedEventArgs e)
{
WindowState = WindowState.Minimized;
}
private void OnCloseClicked(object? sender, RoutedEventArgs e)
{
Close();
}
}