我的RIA启用SL应用程序有点问题 .

THE BACKGROUND

相关部分如下所示:

  • 当任何数据操作(即加载,提交,登录等)到位时,BusyOverlay控件(我写的)禁用RootVisual并提供视觉效果 . 操作完成后,将RootVisual.IsEnabled设置为之前的状态 . 当它与RootVisual交互时,它就像ChildWindow一样(至少据我所知) .

  • RootVisual中的一个元素(本身就是UserControl)是一个隐藏菜单 . 它是一个包含实际菜单的边框 . 它在Resources中有两个故事板(增加和减少它的宽度 - 没什么特别的,它们就像你想象的那样简单),边框本身也处理了MouseEnter和MouseLeave . 处理程序启动其中一个故事板,只需一行代码 . 我没有提供任何样本,因为没有任何有趣的事情发生,它只是膨胀的帖子 . 如果您认为有必要,请告诉我,我将发布相关的XAML和C#代码 .

THE PROBLEM

禁用RootVisual时,不会触发Border.MouseLeave事件 . 当用户点击加载初始数据的菜单中的某些内容,然后将鼠标移到菜单外时,它就不会隐藏 . 有没有办法优雅地解决这个问题? CaptureMouse是不可能的(它需要鼠标左键关闭) . 我能想到的是在处理静态类的数据操作中发布一个“OperationFinished”事件,并在UserControl中处理RootVisual,但我觉得它很难看,不适合我的架构 . 有什么我想念的吗?

对于任何解决方案和建议,我将不胜感激 .