Я читал о том, как лучше всего открывать диалоги с помощью PRISM и открывать их способом MVVM, однако то, что я нашел до сих пор, похоже, работает только с пользовательскими диалогами. Я хотел бы иметь возможность открывать CommonOpenFileDialog при нажатии кнопки, но я очень озадачен тем, как я могу это сделать, придерживаясь шаблона MVVM.
Я могу сделать это с помощью кода, но я хотел бы избежать этого, если это возможно, но проблема, с которой я здесь сталкиваюсь, заключается в том, как я могу затем передать результат диалога в модель представления из кода позади. Будет ли здесь приемлем EventAggregator?
Это мой класс SelectFolderDialog, который открывает диалоговое окно. В настоящее время это вызывается из кода моего представления:
public class SelectFolderDialog
{
public string SelectFolder()
{
var folderSelectorDialog = new CommonOpenFileDialog();
folderSelectorDialog.EnsureReadOnly = true;
folderSelectorDialog.IsFolderPicker = true;
folderSelectorDialog.AllowNonFileSystemItems = false;
folderSelectorDialog.Multiselect = false;
folderSelectorDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
folderSelectorDialog.Title = "Select Folder";
folderSelectorDialog.ShowDialog();
string SelectedFolderPath = folderSelectorDialog.FileName;
Console.WriteLine(SelectedFolderPath);
return SelectedFolderPath;
}
}