Reusable WPF dialogs for browsing and selecting files and folders from FTP and SFTP servers.
RemoteFileDialog is a .NET WPF component that provides reusable dialog windows for remote file and folder selection.
It is designed for desktop applications that need FTP or SFTP browsing without building a custom remote explorer from scratch.
- FTP browsing support
- SFTP browsing support
- Remote folder selection dialog
- Remote file selection dialog
- Multi-file selection support
- TreeView folder navigation
- Connection monitoring
- Reconnect handling
- Loading indicators and status feedback
- Header checkbox for select all / deselect all files
- SFTP password authentication
- SFTP private key authentication
- SFTP password and private key authentication
- Human-readable file size formatting
- Standardized date formatting
- Professional vector-based icons
- Reusable MVVM-friendly architecture
| Package | Description | NuGet |
|---|---|---|
| RemoteFileDialog.Wpf | Main WPF package containing remote folder and file selection dialogs. Recommended package for most applications. | https://www.nuget.org/packages/RemoteFileDialog.Wpf |
| RemoteFileDialog.Core | Shared models, enums, interfaces, and helper classes used by RemoteFileDialog. | https://www.nuget.org/packages/RemoteFileDialog.Core |
| RemoteFileDialog.Infrastructure | FTP and SFTP infrastructure implementation using FluentFTP and SSH.NET. | https://www.nuget.org/packages/RemoteFileDialog.Infrastructure |
Install the main package:
dotnet add package RemoteFileDialog.WpfThe following packages are installed automatically as dependencies:
- RemoteFileDialog.Core
- RemoteFileDialog.Infrastructure
- FTP
- FTPS
- SFTP
- .NET 8
- WPF
- Windows
var connection = new RemoteConnectionOptions
{
ConnectionType = RemoteConnectionType.Ftp,
Host = "ftp.example.com",
Port = 21,
Username = "username",
Password = "password"
};
var dialog = new RemoteFolderDialog(connection);
if (dialog.ShowDialog() == true)
{
var selectedFolder = dialog.SelectedFolderPath;
}var connection = new RemoteConnectionOptions
{
ConnectionType = RemoteConnectionType.Sftp,
Host = "sftp.example.com",
Port = 22,
Username = "username",
Password = "password"
};
var dialog = new RemoteFolderDialog(connection);
if (dialog.ShowDialog() == true)
{
var selectedFolder = dialog.SelectedFolderPath;
}var connection = new RemoteConnectionOptions
{
ConnectionType = RemoteConnectionType.Sftp,
Host = "sftp.example.com",
Port = 22,
Username = "username",
SftpAuthType = SftpAuthType.PrivateKey,
PrivateKeyPath = @"C:\Keys\private-key.ppk",
PrivateKeyPassphrase = "optional-passphrase"
};
var dialog = new RemoteFolderDialog(connection);
if (dialog.ShowDialog() == true)
{
var selectedFolder = dialog.SelectedFolderPath;
}var connection = new RemoteConnectionOptions
{
ConnectionType = RemoteConnectionType.Sftp,
Host = "sftp.example.com",
Port = 22,
Username = "username",
Password = "password"
};
var dialog = new RemoteFilePickerDialog(
connection,
new RemoteDialogOptions
{
AllowMultipleSelection = true
});
if (dialog.ShowDialog() == true)
{
var selectedFiles = dialog.SelectedFilePaths;
}RemoteFileDialog.Core
RemoteFileDialog.Infrastructure
RemoteFileDialog.Wpf
RemoteFileDialog.SampleApp
This project is actively maintained, and the core FTP/SFTP browsing functionality is implemented and usable.
- FTP browsing support
- SFTP browsing support
- Password authentication
- Private key authentication
- Password and private key authentication
- Remote folder selection dialog
- Remote file selection dialog
- Multi-file selection support
- Connection monitoring with automatic status updates
- Reconnect handling
- TreeView navigation with path synchronization
- Header checkbox for select all / deselect all files
- Loading indicators and UI status feedback
- Professional vector-based icons
- Standardized date formatting
- Human-readable file size formatting
- Documentation and usage examples
- Sample WPF application for testing
- NuGet package publishing
- Advanced filtering and sorting
- Dark mode support
- Search support
- File type filtering
- Localization support
- Keyboard navigation improvements
- Additional UI/UX polish
- TreeView lazy loading improvements
This project uses the following open-source libraries:
- FluentFTP (MIT License)
- SSH.NET (MIT License)
- CommunityToolkit.Mvvm (MIT License)
This project is licensed under the MIT License.

