Единое окно экземпляра в Catel v4.0

Если у меня есть кнопка (привязанная к команде «OpenOtherWindow»), которая открывает DataWindow с помощью IUIVisualizerService.Show(viewModel), как я могу предотвратить открытие другого экземпляра указанного DataWindow?

Я не думаю, что создание Singleton ViewModel - правильный способ сделать это, и наличие логического "IsWindowOpen" в ViewModel, где находится моя команда "OpenOtherWindow", не будет очень MVVM, хотя это текущий способ, которым мы это сделали .

Как бы я сделал это в Catel?


person pjdupreez    schedule 18.11.2014    source источник


Ответы (1)


Ключевым моментом является создание службы, которая управляет состоянием и экземплярами окон. Тогда вам никогда не придется беспокоиться о фактическом поведении, и вы сможете изменить его в одном месте.

Затем вы можете просто вызвать следующий (псевдо) код:

_myFeatureService.Show();

В этом сервисе вы можете отслеживать, открыто ли окно, и открыть окно, если нет. Если вы хотите изменить это поведение в будущем, вам нужно сделать это только в одном месте: в службе.

person Geert van Horrik    schedule 19.11.2014
comment
интересно. будет ли IVisualizerService хорошим интерфейсом для создания такой пользовательской службы или мне придется начинать с нуля? - person pjdupreez; 19.11.2014
comment
Начните с нуля и внутренне используйте IUIVisualizerService для отображения окна, если это необходимо. - person Geert van Horrik; 19.11.2014