两个内容相互重叠

时间:2014-07-14 22:41:41

标签: wpf wpf-controls

让我试着解释一下场景:我的主视图看起来像这样(简化):

<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是一个非常复杂的屏幕,包含许多标签,并且每次显示对话框屏幕时都需要时间/资源来消除它/重新创建它。这样我保持“活着”,关闭对话框后立即显示。

1 个答案:

答案 0 :(得分:0)

您所描述的是使用window.ShowDialog打开对话Window的自然效果。从链接页面:

  

ShowDialog显示窗口,禁用应用程序中的所有其他窗口,并仅在窗口关闭时返回。这种类型的窗口称为模态窗口。

因此,正如您所看到的,这会自动禁用应用程序中的所有其他窗口。也许你应该试试呢?