Окно единственного экземпляра в Catel v4.0
Если у меня есть кнопка (связанная с командой "OpenOtherWindow"), которая открывает окно DataWindow с помощью IUIVisualizerService.Show (viewModel), как я могу предотвратить открытие другого экземпляра указанного DataWindow?
Я не думаю, что создание Singleton ViewModel является правильным способом сделать это, и наличие логического "IsWindowOpen" в ViewModel, где находится моя "OpenOtherWindow" команда, не будет очень MVVM, хотя это текущий способ, которым мы это сделали,
Как бы я сделал это в Catel?
1 ответ
Ключ заключается в создании службы, которая управляет состоянием и экземплярами окон. Тогда вам никогда не придется беспокоиться о реальном поведении и вы можете изменить его в одном месте.
Тогда вы можете просто вызвать следующий (псевдо) код:
_myFeatureService.Show();
В этом сервисе вы можете отслеживать, если окно уже открыто, и открывать окно, если нет. Если вы хотите изменить это поведение в будущем, вам нужно сделать это только в одном месте: службе.