Окно единственного экземпляра в Catel v4.0

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

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

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

1 ответ

Решение

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

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

_myFeatureService.Show();

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

Другие вопросы по тегам