让我试着解释一下场景:我的主视图看起来像这样(简化):
<Grid>
<ContentControl Content="{Binding RegularScreen}" /> <!--used for "regular" application views -->
<ContentControl Content="{Binding DialogScreen}" /> <!-- used for dialog view -->
</Grid>
首先创建常规屏幕。在常规屏幕上工作时,用户触发需要向用户显示对话屏幕的操作。此对话框屏幕必须完全覆盖应用程序,不得允许用户在此对话框上执行任何其他操作。对话框屏幕存在于:
要返回上面的代码,当显示对话框屏幕时,DialogScreen将设置为对话框屏幕的实例。这就是问题所在:
现在我们同时显示了RegularScreen和DialogScreen内容(尽管第二个内容在视觉上与第一个内容重叠)。因为在RegularScreen中我有一些监视键盘的InputBindings,当我在显示DialogScreen时按某个键时,RegularScreen会捕获该键吗?这应该永远不会发生,唯一应该处理键的屏幕是DialogScreen(因为它位于RegularScreen之上)。
任何想法为什么会发生这种情况以及有关设计变更的建议?
我之所以决定让DialogScreen与RegularScreen重叠,是因为RegualarScreen是一个非常复杂的屏幕,包含许多标签,并且每次显示对话框屏幕时都需要时间/资源来消除它/重新创建它。这样我保持“活着”,关闭对话框后立即显示。
答案 0 :(得分:0)
您所描述的是使用window.ShowDialog
打开对话Window
的自然效果。从链接页面:
ShowDialog显示窗口,禁用应用程序中的所有其他窗口,并仅在窗口关闭时返回。这种类型的窗口称为模态窗口。
因此,正如您所看到的,这会自动禁用应用程序中的所有其他窗口。也许你应该试试呢?