我正在尝试找到正确显示非基于窗口的模式对话框的方法(即它们覆盖窗口的现有部分并以模式方式显示在该内容的顶部 - 覆盖的部分不可访问)。该应用程序构建在 caliburn.micro 框架 1.5.2 之上的 .net 4.5 中,并使用 MefBootstrapper(基于http://caliburnmicro.codeplex.com/wikipage?title=Customizing%20The%20Bootstrapper)。
简单的解决方案(xaml 堆栈中的重叠控件)并未涵盖所有问题,例如键盘焦点和导航。
我找到了从 FrameworkElement 派生的 ModalContentPresenter 类,并在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 一起使用,或者您有更好的解决方案吗?