Я создаю приложение .NET 8 MAUI, в котором мне нужно организовать аудиофайлы в иерархической структуре папок. Вариант использования аналогичен ситуации, когда врач делает аудиозаметки для пациентов во время визитов.
Root
+1001_John Dale
-1002_Anna Simpson
-2024-05-23
09-12-45.wav
-2024-05-21
14-25-45.wav
17-05-22.wav
-1003_Johnatan Doe
-2024-05-23
09-32-45.wav
-2024-05-20
16-25-45.wav
Я хочу создать структуру/хранилище папок и файлов на уровне приложения, как указано выше, на любой платформе, поддерживаемой .NET MAUI. Я также хотел бы при желании сохранить/синхронизировать одну и ту же иерархию с Google Drive, Azure Blob Storage или Amazon S3, поэтому было бы неплохо иметь какой-то общий интерфейс, определяющий сохранение этой иерархии в локальном или удаленном месте (в облаке). .
Как мне добиться такого иерархического представления в моем приложении .NET MAUI? Мне нужен расширяемый список пациентов, в котором папка каждого пациента раскрывается, чтобы отображать даты посещений и соответствующие аудиозаметки, когда врач расширяет узел пациента, нажимая значок + (или при поиске Patient_ID или частей полного_имени и найдена только одна запись?
Дополнительно, как загрузить структуру папок и файлов из корневой папки (не отображая саму корневую папку)? Пользователи должны иметь возможность настроить самую верхнюю папку в настройках приложения («корневую» в данном случае).
Мы будем очень признательны за любые рекомендации по определению механизма хранения, реализации иерархического представления и загрузке структуры папок!
Я хочу иметь аналогичную структуру папок, как в проводнике Windows (со значком эксандера «>» или «+», когда есть дочерние элементы, и если узел расширен, он будет иметь стрелку вниз «v» или «-»). Я в настоящее время изучаю макеты и способы создания иерархии. Я не уверен, нужно ли мне использовать элементы на основе рекурсии при отображении абстрактного класса, такого как FolderItem . У меня будет корневой узел «Пациенты», настраиваемая папка в локальном хранилище каждого устройства и база FolderItem с наследованием классов PatientItem и VisitItem, которые могут группировать дочерние элементы и файл аудиозаписи листового узла.
Я могу иметь некоторую вариативность при рендеринге, проверяя, чтобы унаследованный класс делал что-то особенное при наличии определенного унаследованного класса.
На какой платформе вы бы хотели это реализовать? На разных платформах существуют разные способы чтения и хранения данных файлов. Для получения подробной информации вы можете обратиться к средству выбора файлов и помощникам файловой системы, поддерживаемым MAUI.





Чтобы создать папки и подфайлы в MAUI, вы можете использовать FileSystem и System.IO для их создания:
public static void createFolder(string folderName)
{
string mainDir = FileSystem.Current.AppDataDirectory;
string folderPath = Path.Combine(mainDir,folderName);
if (!System.IO.Directory.Exists(folderPath))
{
System.IO.Directory.CreateDirectory(folderPath);
}
}
Что касается чтения содержимого файла, вы можете использовать FilePicker в MAUI.
Поскольку разные платформы имеют разные способы доступа к файловой системе, вам необходимо выполнить соответствующие операции в зависимости от содержимого документа.
Каковы ваши конкретные требования? Вам нужно отображать аудиофайлы и информацию о пациенте в интерфейсе XAML? У вас есть приблизительный пример страницы или пример кода?