diff --git a/src/Avalonia.Dialogs/Internal/ManagedFileChooser.xaml b/src/Avalonia.Dialogs/Internal/ManagedFileChooser.xaml index 5e02836173..2e694e726d 100644 --- a/src/Avalonia.Dialogs/Internal/ManagedFileChooser.xaml +++ b/src/Avalonia.Dialogs/Internal/ManagedFileChooser.xaml @@ -4,7 +4,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:dialogs="clr-namespace:Avalonia.Dialogs.Internal" xmlns:internal="clr-namespace:Avalonia.Dialogs.Internal" - x:Class="Avalonia.Dialogs.Internal.ManagedFileChooser"> + x:Class="Avalonia.Dialogs.Internal.ManagedFileChooser" Margin="12 0 12 6"> diff --git a/src/Avalonia.Dialogs/Internal/ManagedFileDialog.xaml b/src/Avalonia.Dialogs/Internal/ManagedFileDialog.xaml deleted file mode 100644 index 15fd8fcddb..0000000000 --- a/src/Avalonia.Dialogs/Internal/ManagedFileDialog.xaml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/src/Avalonia.Dialogs/Internal/ManagedFileDialog.xaml.cs b/src/Avalonia.Dialogs/Internal/ManagedFileDialog.xaml.cs deleted file mode 100644 index 34b0163808..0000000000 --- a/src/Avalonia.Dialogs/Internal/ManagedFileDialog.xaml.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Runtime.InteropServices; -using Avalonia; -using Avalonia.Controls; -using Avalonia.Markup.Xaml; -using Avalonia.Media; - -namespace Avalonia.Dialogs.Internal -{ - class ManagedFileDialog : Window - { - public ManagedFileDialog() - { - AvaloniaXamlLoader.Load(this); -#if DEBUG - this.AttachDevTools(); -#endif - } - } -} diff --git a/src/Avalonia.Dialogs/ManagedFileDialogExtensions.cs b/src/Avalonia.Dialogs/ManagedFileDialogExtensions.cs index 8c0aba5942..864de4b3f6 100644 --- a/src/Avalonia.Dialogs/ManagedFileDialogExtensions.cs +++ b/src/Avalonia.Dialogs/ManagedFileDialogExtensions.cs @@ -1,3 +1,4 @@ +using System; using System.Linq; using System.Threading.Tasks; using Avalonia; @@ -10,46 +11,55 @@ namespace Avalonia.Dialogs { public static class ManagedFileDialogExtensions { - class ManagedSystemDialogImpl : ISystemDialogImpl - { - async Task Show(SystemDialog d, IWindowImpl parent) - { - var model = new ManagedFileChooserViewModel((FileSystemDialog)d); - - var dialog = new ManagedFileDialog - { - DataContext = model - }; - - string[] result = null; - model.CompleteRequested += items => - { - result = items; - dialog.Close(); - }; - model.CancelRequested += dialog.Close; - - await dialog.ShowDialog(parent); - return result; - } - - public async Task ShowFileDialogAsync(FileDialog dialog, IWindowImpl parent) - { - return await Show(dialog, parent); - } - - public async Task ShowFolderDialogAsync(OpenFolderDialog dialog, IWindowImpl parent) - { - return (await Show(dialog, parent))?.FirstOrDefault(); - } - } + class CustomWindowManagedSystemDialogImpl : ISystemDialogImpl where T : Window, new() + { + async Task Show(SystemDialog d, IWindowImpl parent) + { + var model = new ManagedFileChooserViewModel((FileSystemDialog)d); + + var dialog = new T + { + Content = new ManagedFileChooser(), + DataContext = model + }; + + string[] result = null; + model.CompleteRequested += items => + { + result = items; + dialog.Close(); + }; + model.CancelRequested += dialog.Close; - public static TAppBuilder UseManagedSystemDialogs(this TAppBuilder builder) + await dialog.ShowDialog(parent); + return result; + } + + public async Task ShowFileDialogAsync(FileDialog dialog, IWindowImpl parent) + { + return await Show(dialog, parent); + } + + public async Task ShowFolderDialogAsync(OpenFolderDialog dialog, IWindowImpl parent) + { + return (await Show(dialog, parent))?.FirstOrDefault(); + } + } + + public static TAppBuilder UseManagedSystemDialogs(this TAppBuilder builder) where TAppBuilder : AppBuilderBase, new() { builder.AfterSetup(_ => - AvaloniaLocator.CurrentMutable.Bind().ToSingleton()); + AvaloniaLocator.CurrentMutable.Bind().ToSingleton>()); return builder; } - } + + public static TAppBuilder UseManagedSystemDialogs(this TAppBuilder builder) + where TAppBuilder : AppBuilderBase, new() where TWindow : Window, new() + { + builder.AfterSetup(_ => + AvaloniaLocator.CurrentMutable.Bind().ToSingleton>()); + return builder; + } + } }