Я пытаюсь найти способы корректного отображения модальных диалогов на основе окон (т. Е. Они охватывают существующую часть окна и отображаются поверх этого содержимого модальным способом - покрытая часть Недоступно). Приложение построено в .net 4.5 поверх оболочки caliburn.micro 1.5.2 и использует MefBootstrapper (на основе http://caliburnmicro.codeplex.com/wikipage?title=Customizing%20The%20Bootstrapper).ModalContentPresenter с Caliburn.Micro
Простые решения (перекрывающиеся элементы управления в стеке xaml) не охватывают все проблемы, такие как фокус клавиатуры и навигация.
Я нашел класс ModalContentPresenter, полученный из FrameworkElement, и представлен в http://programmingwithpassion.wordpress.com/2012/07/01/displaying-modal-content-in-wpf/, который, как представляется, обрабатывает большинство возможных проблем с модальными диалогами.
К сожалению, в окне не отображается контент. Основываясь на моих исследованиях, похоже, что условные обозначения кода не работают для элементов управления, определенных как дети ModalContentPresenter. К сожалению, мне не удалось найти подходящее место для поиска в исходном коде caliburn.micro и/или документации.
Пример (без ModelContentPresenter, рабочий):
<Window>
<TextBlock x:Name="SomeName"/>
</Window>
Пример (с ModelContentPresenter, не работает):
<Window>
<c:ModelContentPresenter isModal="False">
<TextBlock x:Name="SomeName"/>
</c:ModelContentPresenter>
</Window>
Что мне нужно сделать, чтобы получить условности код работы с ModelContentPresenter, или у вас есть лучшее решение?
Вы проверили образец приложения HelloScreens, который является частью [Экраны, проводники и композиция] (https://caliburnmicro.codeplex.com/wikipage?title=Screens%2c%20Conductors%20and%20Composition&referringTitle=Documentation) в документации. Автор реализовал это красиво, и насколько я могу сказать, он работает с навигацией и фокусировкой. –
Экраны/проводники и т. Д. Допускаются для случаев, когда в каждый момент времени (из этого конкретного стека) просматривается только один экран. Это контрастирует с моим случаем, когда я хочу, чтобы исходный экран все еще был видимым, пока отображается модальный диалог (исходный экран немного затемнен, пока отображается модальное диалоговое окно). Таким образом, я не вижу полезного примера приложения. Да, они полезны для части «показать текущий экран» и «показать последний модальный диалог», но не для «одновременного отображения текущего экрана и модального диалога в одном месте». – alik