Я пишу приложение, используя платформу Microsoft Prism, и у меня возникают проблемы при разработке наилучшего подхода к простому диалоговому окну «Сохранить файл» style .
Примечание: я не могу использовать стандартный диалог, так как я не сохраняю файлы в файловую систему, поэтому нужно написать что-то похожее с нуля.
Итак, вот основные элементы управления моего диалога:
- Пользовательский элемент управления, отображающий иерархию папок. (
IFolderView
)
- Представление списка для отображения содержимого папки. (
IFolderContentsView
)
- Текстовое поле для ввода пользователем имени сохраненных файлов.
Единственное реальное взаимодействие в форме заключается в том, что когда пользователь выбирает папку слева, представление списка справа заполняется содержимым папок.
Когда я начал писать диалог, я изначально создал пару регионов для своих пользовательских элементов управления и использовал обнаружение видов для добавления своих видов. Я сделал это, потому что это то, как я вводил IFolderView
в другом месте приложения. Теперь я обнаружил, что мне нужно что-то узнать об элементах управления в регионе, чтобы они могли взаимодействовать друг с другом. Я думал о EventAggregator
, но это не подходит для простого диалога сохранения.
Мое решение этой проблемы - использовать представление инъекций. Поэтому я спрашиваю мой контейнер Unity о реализации IFolderViewModel
и устанавливаю его вид содержимого региона во время инициализации. Таким образом, я знаю достаточно о пользовательских элементах управления в форме, чтобы она работала, но все равно она слабо связана.
Похоже ли это на разумную вещь? Есть ли способ лучше? Я что-то упустил?