Silverlight:如何将鼠标事件从一个控件路由到另一个控件?

Silverlight:如何将鼠标事件从一个控件路由到另一个控件?,silverlight,events,mouse,Silverlight,Events,Mouse,如果在一个控件中捕获鼠标移动/鼠标按钮按下事件,如何将捕获的事件路由到另一个控件 在MSDIN文档中,我找到了WPFUIElement.RaiseEvent,但它似乎不存在于Silverlight中 提出这个问题的原因如下 我有一个应用程序,用户可以在屏幕上选择一个控件来检索控件的ID(自定义属性)。当用户选择控件时,我不希望触发控件的默认操作-无按钮点击、无文本突出显示、无链接导航等。这就是为什么在进入“选择模式”时,我在应用程序上放置一个透明覆盖,用户点击后,我发现覆盖后面的元素,获取其ID

如果在一个控件中捕获鼠标移动/鼠标按钮按下事件,如何将捕获的事件路由到另一个控件

在MSDIN文档中,我找到了WPF
UIElement.RaiseEvent
,但它似乎不存在于Silverlight中

提出这个问题的原因如下

我有一个应用程序,用户可以在屏幕上选择一个控件来检索控件的ID(自定义属性)。当用户选择控件时,我不希望触发控件的默认操作-无按钮点击、无文本突出显示、无链接导航等。这就是为什么在进入“选择模式”时,我在应用程序上放置一个透明覆盖,用户点击后,我发现覆盖后面的元素,获取其ID并删除覆盖

除了屏幕上有一个滚动查看器,用户可能希望选择一个滚动到视图之外的元素外,这种方法工作正常。因此,在拾取元素时,用户首先单击滚动条将所需元素滚动到视图中,但滚动条不工作,因为它位于覆盖层后面


目前我有一个工作代码,可以检测鼠标光标下(以及覆盖层后面)的元素是否是滚动条实例,因此我在拾取过程中忽略了它——我的应用程序不需要拾取滚动条。但是如何将鼠标事件从覆盖区传递到后面的滚动条?

简单的回答是,您无法路由鼠标事件。
但您可以做的是:只要鼠标悬停在
滚动条上
,就可以将鼠标单击捕捉器覆盖的
IshitteVisible属性设置为false。点击一下就可以了。或者您只能在用户单击时检测滚动条吗?

是的,我有这个想法,但当我隐藏覆盖或使其IshitteVisible=false时,我无法检测用户将鼠标移离滚动条的时刻。@Martin:hm,所以即使您没有折叠覆盖,也只需将hitTest设置为false,无法获取MouseMove事件?是。我试图在MouseMove中将其设置回true,但在我设置了ishitestVisible=false之后,覆盖层将完全停止接收鼠标事件,因此当用户停止滚动并希望选择元素时,我无法重新启用它。