Я новичок в фреймворке Sliverlight и только начинаю разбираться в этом, но у меня аналогичная потребность во всплывающем модальном диалоговом окне. Я только что попробовал идею, которая выглядит многообещающе:
- Я создал Rectangle (названный «Shield»), который покрывает всю мою область применения. Он существует поверх всего в основном приложении. Я установил кисть заливки на Белый, а кисть непрозрачности - на 81%, чтобы содержимое основного приложения просвечивало, но слегка (как в отключенном состоянии). Затем убедитесь, что «Щит» проверен на попадание. Теперь, когда «Щит» виден, он также, по сути, заблокирует весь ввод для элементов управления ниже (по крайней мере, от мыши, еще не пробовал клавиатуру). Когда приложение инициализируется, установите видимость «Щит» на «Свернутый». В этом состоянии он не будет блокировать ввод в основное приложение.
- Диалоговое окно затем строится на другом элементе холста, который существует в z-порядке сверху экрана. Обычно диалоговое окно будет невидимым, но когда мне это нужно, я просто устанавливаю «Щит» на видимое, а диалоговое окно на видимое. Поскольку диалог находится над «Щитом», я получаю очень модальное поведение. Когда диалоговое окно закрыто, сделайте диалоговое окно и холст «Щит» снова невидимым, и главное приложение снова станет активным.
Я уверен, что это самый грубый способ сделать это, и что в конечном итоге я остановлюсь на более элегантной конструкции, но пока она работает.