如果我在一个控件中捕获鼠标移动/鼠标按钮事件,如何将捕获的事件路由到另一个控件?
在MSDIN文档中,我发现了WPF UIElement.RaiseEvent
,但它似乎并不存在于Silverlight中。
这个问题的原因是以下问题。
我有一个应用程序,用户可以在屏幕上选择一个控件来检索控件的ID(自定义属性)。当用户选择一个控件时,我不希望触发控件的默认操作 - 没有按钮点击,没有文本突出显示,没有链接导航等。这就是进入"拣选模式& #34;,我在我的应用程序上放置了一个透明的叠加层,用户点击它后,我发现叠加层后面的元素,获取其ID并删除叠加层。
这种方法工作正常,除了一种情况,当屏幕上有滚动查看器,用户可能想要选择一个滚出视图的元素。因此,在选择元素时,用户首先单击滚动条以将所需元素滚动到视图中,但滚动条不起作用,因为它位于叠加层后面。
目前我有工作代码,可以检测鼠标光标下(和覆盖后面)的元素是否是滚动条实例,因此我在采摘过程中忽略它 - 我的应用程序不需要选择滚动条。但是如何将鼠标事件从叠加层传递到后面的滚动条?
答案 0 :(得分:0)
简短的回答是,您无法路由鼠标事件。
但您可以做的是:只要鼠标悬停在Scrollbar
上,您就可以将mouseClick catcher overlay的IsHitTestVisible
属性设置为false。点击将直接通过它。或者您只能在用户点击时检测到滚动条?