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