feat: enhance FileChooser demo.

(cherry picked from commit e4c21aefc69984af7fcd807abd3f2f3310e5bbb1)
This commit is contained in:
Zhang Dian 2024-08-26 20:16:46 +08:00
parent 5161331b98
commit 1d975fa734
2 changed files with 24 additions and 21 deletions

View File

@ -8,8 +8,13 @@
d:DesignWidth="800" d:DesignWidth="800"
mc:Ignorable="d"> mc:Ignorable="d">
<StackPanel HorizontalAlignment="Left" Spacing="10"> <StackPanel HorizontalAlignment="Left" Spacing="10">
<Button Name="openFileDialog">Open File</Button> <StackPanel.Styles>
<Button Name="selectFolderDialog">Select Folder</Button> <Style Selector="Button">
<Button Name="saveFileDialog">Save File</Button> <Setter Property="HorizontalAlignment" Value="Stretch" />
</Style>
</StackPanel.Styles>
<Button Name="OpenFileButton" Content="Open File" />
<Button Name="SelectFolderButton" Content="Select Folder" />
<Button Name="SaveFileButton" Content="Save File" />
</StackPanel> </StackPanel>
</UserControl> </UserControl>

View File

@ -1,10 +1,6 @@
using System;
using System.Collections.Generic; using System.Collections.Generic;
using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Dialogs;
using Avalonia.Interactivity; using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Avalonia.Platform.Storage; using Avalonia.Platform.Storage;
namespace Semi.Avalonia.Demo.Pages; namespace Semi.Avalonia.Demo.Pages;
@ -14,14 +10,14 @@ public partial class ManagedFileChooserDemo : UserControl
public ManagedFileChooserDemo() public ManagedFileChooserDemo()
{ {
InitializeComponent(); InitializeComponent();
openFileDialog.Click += OpenFileDialog; OpenFileButton.Click += OpenFileDialog;
selectFolderDialog.Click += SelectFolderDialog; SelectFolderButton.Click += SelectFolderDialog;
saveFileDialog.Click += SaveFileDialog; SaveFileButton.Click += SaveFileDialog;
} }
private async void OpenFileDialog(object sender, RoutedEventArgs args) private async void OpenFileDialog(object? sender, RoutedEventArgs args)
{ {
IStorageProvider? sp = GetStorageProvider(); var sp = GetStorageProvider();
if (sp is null) return; if (sp is null) return;
var result = await sp.OpenFilePickerAsync(new FilePickerOpenOptions() var result = await sp.OpenFilePickerAsync(new FilePickerOpenOptions()
{ {
@ -30,9 +26,10 @@ public partial class ManagedFileChooserDemo : UserControl
AllowMultiple = true, AllowMultiple = true,
}); });
} }
private async void SelectFolderDialog(object sender, RoutedEventArgs args)
private async void SelectFolderDialog(object? sender, RoutedEventArgs args)
{ {
IStorageProvider? sp = GetStorageProvider(); var sp = GetStorageProvider();
if (sp is null) return; if (sp is null) return;
var result = await sp.OpenFolderPickerAsync(new FolderPickerOpenOptions() var result = await sp.OpenFolderPickerAsync(new FolderPickerOpenOptions()
{ {
@ -40,16 +37,17 @@ public partial class ManagedFileChooserDemo : UserControl
AllowMultiple = true, AllowMultiple = true,
}); });
} }
private async void SaveFileDialog(object sender, RoutedEventArgs args)
private async void SaveFileDialog(object? sender, RoutedEventArgs args)
{ {
IStorageProvider? sp = GetStorageProvider(); var sp = GetStorageProvider();
if (sp is null) return; if (sp is null) return;
var result = await sp.SaveFilePickerAsync(new FilePickerSaveOptions() var result = await sp.SaveFilePickerAsync(new FilePickerSaveOptions()
{ {
Title = "Open File", Title = "Save File",
}); });
} }
private IStorageProvider? GetStorageProvider() private IStorageProvider? GetStorageProvider()
{ {
var topLevel = TopLevel.GetTopLevel(this); var topLevel = TopLevel.GetTopLevel(this);
@ -58,10 +56,10 @@ public partial class ManagedFileChooserDemo : UserControl
List<FilePickerFileType>? GetFileTypes() List<FilePickerFileType>? GetFileTypes()
{ {
return new List<FilePickerFileType> return
{ [
FilePickerFileTypes.All, FilePickerFileTypes.All,
FilePickerFileTypes.TextPlain FilePickerFileTypes.TextPlain
}; ];
} }
} }