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