gpt4 book ai didi

c# - 如何将输入事件路由到共享同一区域的多个 Canvas 中的特定 Canvas ?

转载 作者:太空宇宙 更新时间:2023-11-03 13:53:29 24 4
gpt4 key购买 nike

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

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

我希望将输入事件仅路由到一个特定的 Canvas ,但我不知道如何命令 WPF 执行此操作。所有输入事件总是到达同一个 Canvas ,而这不是所需的 Canvas 。

我试图操纵 Canvases 的 ZIndex 和 IsHitTestVisible 属性来达到预期的结果,但它似乎并没有改变应用程序的某些行为。无论我做什么,事件总是到达相同的特定 Canvas 。

我试图将所需的 Canvas 放在所有其他 Canvas 之上,并尝试关闭所有不需要的 Canvas 的 HitTest 。这些操作均未成功。

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

最佳答案

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

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

关于c# - 如何将输入事件路由到共享同一区域的多个 Canvas 中的特定 Canvas ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13050635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com