Я прочитал обсуждения об открытии диалога с использованием шаблона mvvm. Я видел несколько примеров, которые говорят, чтобы использовать сервис, но я не понимаю, как все части подходят друг к другу. Я отправляю этот вопрос с просьбой дать указания в том, что я должен прочитать, чтобы лучше понять, чего мне не хватает. Я опубликую то, что у меня внизу, и это работает, но из того, что я вижу в этих сообщениях, я не делаю это правильно или, возможно, не делаю это эффективно. Я вижу, где создается диалоговый интерфейс, а затем класс, который использует интерфейс для выполнения фактической работы. Затем в ViewModel конструктор проходит в этом интерфейсе, это часть, которая меня действительно смущает, не уверен, что ее передают, не хватает информации для подключения точек и не уверен, чего я не вижу.Попытка понять использование службы для открытия диалога
Вот одно сообщение, на которое я смотрел: https://stackoverflow.com/a/1044304/4593652 Я как бы вижу, что они предлагают, но для кого-то не хватает информации. Я не прошу кого-нибудь написать это для меня, просто надеясь на какой-то совет о том, что я должен прочитать, чтобы понять, как эти части подходят друг другу.
В моем коде у меня есть класс, как это: (Это работает, я просто чувствую, что я что-то из того, что я читал на других постах отсутствует)
public class OpenDialogService
{
public string GetOpenDialog(string title)
{
CommonOpenFileDialog dlg = new CommonOpenFileDialog();
dlg.Title = title;
dlg.IsFolderPicker = true;
dlg.AddToMostRecentlyUsedList = true;
dlg.AllowNonFileSystemItems = false;
dlg.EnsureFileExists = false;
dlg.EnsurePathExists = true;
dlg.EnsureReadOnly = false;
dlg.EnsureValidNames = true;
dlg.Multiselect = false;
dlg.ShowPlacesList = true;
if (dlg.ShowDialog() == CommonFileDialogResult.Ok)
{
return dlg.FileName;
}
return null;
}
}
Затем я использую это в моем ViewModel, когда вызывается моя команда.
path = new OpenDialogService().GetOpenDialog("...");
Ответы будут все любезны. Если это сработает для вас, придерживайтесь его, пока не найдете лучший способ. Это часть учебного процесса. В программировании нет единого «правильного пути». – walther
@walther Я не уверен в этом. Хотя нет единого способа правильно программировать, есть шаблоны, которые, если вы не реализуете правильно, уже не являются таким шаблоном, это что-то еще.В этом случае он неправильно реализовал шаблон сервиса. –