diff --git a/src/Avalonia.Controls/SystemDialog.cs b/src/Avalonia.Controls/SystemDialog.cs
index e74b950f23..d81926ecc7 100644
--- a/src/Avalonia.Controls/SystemDialog.cs
+++ b/src/Avalonia.Controls/SystemDialog.cs
@@ -4,30 +4,65 @@ using System.Linq;
using System.Threading.Tasks;
using Avalonia.Controls.Platform;
+#nullable enable
+
namespace Avalonia.Controls
{
+ ///
+ /// Base class for system file dialogs.
+ ///
public abstract class FileDialog : FileSystemDialog
{
+ ///
+ /// Gets or sets a collection of filters which determine the types of files displayed in an
+ /// or an .
+ ///
public List Filters { get; set; } = new List();
- public string InitialFileName { get; set; }
+
+ ///
+ /// Gets or sets initial file name that is displayed when the dialog is opened.
+ ///
+ public string? InitialFileName { get; set; }
}
+ ///
+ /// Base class for system file and directory dialogs.
+ ///
public abstract class FileSystemDialog : SystemDialog
{
[Obsolete("Use Directory")]
- public string InitialDirectory
+ public string? InitialDirectory
{
get => Directory;
set => Directory = value;
}
- public string Directory { get; set; }
+
+ ///
+ /// Gets or sets the initial directory that will be displayed when the file system dialog
+ /// is opened.
+ ///
+ public string? Directory { get; set; }
}
+ ///
+ /// Represents a system dialog that prompts the user to select a location for saving a file.
+ ///
public class SaveFileDialog : FileDialog
{
- public string DefaultExtension { get; set; }
+ ///
+ /// Gets or sets the default extension to be used to save the file (including the period ".").
+ ///
+ public string? DefaultExtension { get; set; }
- public async Task ShowAsync(Window parent)
+ ///
+ /// Shows the save file dialog.
+ ///
+ /// The parent window.
+ ///
+ /// A task that on completion contains the full path of the save location, or null if the
+ /// dialog was canceled.
+ ///
+ public async Task ShowAsync(Window parent)
{
if(parent == null)
throw new ArgumentNullException(nameof(parent));
@@ -37,11 +72,25 @@ namespace Avalonia.Controls
}
}
+ ///
+ /// Represents a system dialog that allows the user to select one or more files to open.
+ ///
public class OpenFileDialog : FileDialog
{
+ ///
+ /// Gets or sets a value indicating whether the user can select multiple files.
+ ///
public bool AllowMultiple { get; set; }
- public Task ShowAsync(Window parent)
+ ///
+ /// Shows the open file dialog.
+ ///
+ /// The parent window.
+ ///
+ /// A task that on completion returns an array containing the full path to the selected
+ /// files, or null if the dialog was canceled.
+ ///
+ public Task ShowAsync(Window parent)
{
if(parent == null)
throw new ArgumentNullException(nameof(parent));
@@ -49,15 +98,27 @@ namespace Avalonia.Controls
}
}
+ ///
+ /// Represents a system dialog that allows the user to select a directory.
+ ///
public class OpenFolderDialog : FileSystemDialog
{
[Obsolete("Use Directory")]
- public string DefaultDirectory
+ public string? DefaultDirectory
{
get => Directory;
set => Directory = value;
}
- public Task ShowAsync(Window parent)
+
+ ///
+ /// Shows the open folder dialog.
+ ///
+ /// The parent window.
+ ///
+ /// A task that on completion returns the full path of the selected directory, or null if the
+ /// dialog was canceled.
+ ///
+ public Task ShowAsync(Window parent)
{
if(parent == null)
throw new ArgumentNullException(nameof(parent));
@@ -65,14 +126,32 @@ namespace Avalonia.Controls
}
}
+
+ ///
+ /// Base class for system dialogs.
+ ///
public abstract class SystemDialog
{
- public string Title { get; set; }
+ ///
+ /// Gets or sets the dialog title.
+ ///
+ public string? Title { get; set; }
}
+ ///
+ /// Represents a filter in an or an .
+ ///
public class FileDialogFilter
{
- public string Name { get; set; }
+ ///
+ /// Gets or sets the name of the filter, e.g. ("Text files (.txt)").
+ ///
+ public string? Name { get; set; }
+
+ ///
+ /// Gets or sets a list of file extensions matched by the filter (e.g. "txt" or "*" for all
+ /// files).
+ ///
public List Extensions { get; set; } = new List();
}
}