Я пишу приложение, которое подключается к сетевым ресурсам.
Когда приложение подключается, я хочу отобразить всплывающее окно с обычным графиком прогресса спинни и кнопкой отмены. Я разработал ConnectProgressViewModel
и соответствующий ConnectProgressView
для наложения.
Мой вопрос: каков самый чистый способ показать / скрыть оверлей из родительской ViewModel?
A) Выставьте константу ConnectProgressViewModel
из моей родительской ViewModel и пусть ConnectProgressView
привяжет ее видимость к свойству ConnectProgressViewModel.IsConnecting
.
B) Предоставьте универсальное свойство Overlay
из родительской ViewModel и установите для него ConnectProgressViewModel
, когда пользователь хочет подключиться. Родительское представление связывает ContentControl
с этим свойством Overlay
, а шаблон данных берет на себя все остальное.
В)?
Первый, похоже, больше инкапсулирует функциональность, так как приложению не нужно заботиться о отображении и скрытии наложения, но постоянное отображение константы ConnectProgressViewModel
кажется неправильным, когда оно отображается только изредка.
Второе, кажется, лучше подходит для MVVM, поскольку ConnectProgressViewModel
создается только тогда, когда это необходимо, но он добавляет больше функциональности родительскому объекту, а также общее свойство Overlay выглядит немного странно.
Ваше здоровье
РЕДАКТИРОВАТЬ:
Я должен пояснить, что это представление не только показывает статус занятости. Это позволяет отменять / повторять попытки, выбирать различные сетевые ресурсы и т. Д. Я опустил такие детали для краткости, что, возможно, было ошибкой, поскольку люди концентрируются на индикаторе занятости.