ПРОГРАММИРОВАНИЕ28 августа
Если вам необходимо в WPF работать с файловой системой с использованием диалоговых окон, то самый простой и наименее затратный способ - это использовать сторонние библиотеки.
Конечно, если у вас есть желание, а главное – знания, чтобы написать свои дмалоговые окна (файловый браузер), полностью ложащиеся а паттерн MVVM, то, конечно, можете заморочиться и написать реализацию.
Для новичков все же проще пойти по пути использования сторонних библиотек.
Первая библиотека, позволяющая без проблем работать с файловой системой - это библиотека Оokii Dialogs Wpf.
Перед началом работы необходимо установить пакет из Nuget Install-Package Ookii.Dialogs.Wpf – Ookii.Dialogs.Wpf
Для удобства все реализации будем делать в файле MainWindow.xaml.cs в методах, привязанных к кнопкам реализованным в MainWindow.xam
Для работы с папками необходимо создать объект класса VistaFolderBrowserDialog
Для работы с файлами необходимо создать объект класса VistaOpenFileDialog Class
MainWindow.xaml.cs
using System;
using System.Windows;
using Ookii.Dialogs.Wpf;
namespace ОokiiDialogsWPF
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
#region Выбор папок: Одна
private void SelectOneFolder()
{
var dialog = new VistaFolderBrowserDialog();
dialog.Description = "Please select a folder.";
dialog.UseDescriptionForTitle = true; // This applies to the Vista style dialog only, not the old dialog.
dialog.Multiselect = false; // Выбор одной папки - надо false
if ((bool)dialog.ShowDialog(this))
{
MessageBox.Show(this, $"Выбрана папка:{Environment.NewLine}{dialog.SelectedPath}", "Пример выбора одной папки");
}
}
#endregion
#region Выбор папок: Несколько
private void SelectAnyFolder()
{
string[] result = null;
var dlg = new VistaFolderBrowserDialog();
dlg.Description = "Please select a folder.";
dlg.UseDescriptionForTitle = true; // This applies to the Vista style dialog only, not the old dialog.
dlg.Multiselect = true; // Выбор нескольких папок
if ((bool)dlg.ShowDialog(this))
{
result = dlg.SelectedPaths;
foreach (var item in result)
{
MessageBox.Show(this, $"Выбрана папка:{Environment.NewLine}{item}", "Пример выбора нескольких папок");
}
}
}
#endregion
#region Выбор файлов: Один
private void SelectOneFile()
{
var dialog = new VistaOpenFileDialog();
dialog.Filter = "Txt file (*.txt) | *.txt";
dialog.Multiselect = false; // Выбор одной папки - надо false
if ((bool)dialog.ShowDialog(this))
{
MessageBox.Show(this, $"Выбран файл:{Environment.NewLine}{dialog.FileName}", "Пример выбора одного файла");
}
}
#endregion
#region Выбор файлов: Несколько
private void SelectAnyFile()
{
string[] result = null;
var dialog = new VistaOpenFileDialog();
dialog.Filter = "Txt file (*.txt) | *.txt";
dialog.Multiselect = true; // Выбор одной папки - надо false
dialog.Title = "!!!!!!!!";
if ((bool)dialog.ShowDialog(this))
{
result = dialog.FileNames;
foreach (var item in result)
{
MessageBox.Show(this, $"Выбраны файлы:{Environment.NewLine}{item}",
"Пример выбора нескольких ФАЙЛОВ");
}
}
}
#endregion
/* Реализация кнопок*/
private void ButtonBase_OnClick_SelectOneFolder(object sender, RoutedEventArgs e) { SelectOneFolder(); }
private void ButtonBase_OnClick_SelectAnyFolder(object sender, RoutedEventArgs e) { SelectAnyFolder(); }
private void ButtonBase_OnClick_SelectOneFile(object sender, RoutedEventArgs e) { SelectOneFile(); }
private void ButtonBase_OnClick_SelectAnyFile(object sender, RoutedEventArgs e) { SelectAnyFile(); }
}
}
MainWindow.xaml
<Window
x:Class="ОokiiDialogsWPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:ОokiiDialogsWPF"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="Оokii Dialogs WPF"
Width="800"
Height="450"
mc:Ignorable="d">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0" Margin="5">
<StackPanel Margin="5" Orientation="Vertical">
<Button
Width="200"
Height="30"
Margin="2"
Click="ButtonBase_OnClick_SelectOneFolder"
Content="Выбор одной папки" />
<Button
Width="200"
Height="30"
Margin="2"
Click="ButtonBase_OnClick_SelectAnyFolder"
Content="Выбор НЕСКОЛЬКИХ папок" />
<Button
Width="200"
Height="30"
Margin="2"
Click="ButtonBase_OnClick_SelectOneFile"
Content="Выбор ОДНОГО файла" />
<Button
Width="200"
Height="30"
Margin="2"
Click="ButtonBase_OnClick_SelectAnyFile"
Content="Выбор НЕСКОЛЬКИХ файлов" />
</StackPanel>
</Grid>
<Grid Grid.Column="1" Margin="5" />
</Grid>
</Window>
Диалог в WPF C#. Работа с файловой системой. Библиотека Оokii Dialogs WPF
MVVM - просто о сложном. Пример на C#
MVVM и внедрение зависимостей Часть 1
MVVM и внедрение зависимостей Часть 2
Теги: #си шарп, #c#, #wpf, #программирование, #оokii dialogs wpf
Ваш комментарий успешно добавлен.
После проверки комментарий будет опубликован на сайте.