2

我有一些逻辑上由几层组成的面向图形的 Windows-Store-App 应用程序。每一层都绘制自己的事物类型。

由于某些原因,我选择将每一层表示为 WPF 画布。所以有多个画布在逻辑上共享同一个区域。非画布嵌套在另一个中。它们都在“文档大纲”树中的同一级别,位于网格对象的某个单元格下。

我希望输入事件仅路由到一个特定的画布,但我不知道如何订购 WPF 来做到这一点。所有输入事件总是到达同一个画布,这不是所需的画布。

我试图操纵 Canvases 的 ZIndex 和 IsHitTestVisible 属性以实现所需的结果,但它似乎并没有改变应用程序的行为。无论我做什么,事件总是到达相同的特定画布。

我试图将所需的画布放在所有其他画布的顶部,并尝试关闭所有不需要的画布的命中测试。这些行动都没有成功。

如何告诉框架将事件路由到我选择的画布?

4

1 回答 1

1

即使它们都处于相同的“级别”,每个画布仍然绘制在另一个之上。最后一个要绘制的是 XAML 视图中列出的最低的一个。列出的最低的也是第一个有机会捕获输入的。更改 ZIndex 确实会更改它们的绘制顺序,但我不相信它会更改处理输入的顺序。

应该能够通过将IsHitTestVisible 属性设置为 false来阻止所有您不希望处理输入的输入。如果这不起作用,我很想知道哪些事件仍在进行中。

于 2013-01-22T19:53:14.207 回答