【问题标题】:Moving Silverlight 2 popup windows移动 Silverlight 2 弹出窗口
【发布时间】:2008-11-19 11:36:04
【问题描述】:

我们在 Silverlight 2 应用程序中使用弹出窗口;这些可以通过单击标题栏并拖动以标准方式移动。如果标题栏被拖出浏览器镶边后的站点,则无法再移动窗口。

我们有用户认为这个问题有问题,我想知道是否有其他方法可以在窗口卡在 chrome 后面时允许移动窗口。

或者也许一种防止弹出窗口的任何部分超出窗口的方法会更好。

【问题讨论】:

    标签: silverlight popup window


    【解决方案1】:

    您的鼠标移动以离散的时间间隔报告。也就是说,您移动鼠标的速度越快,报告的鼠标位置就越远。将鼠标从窗口内快速拖动到窗口外可以报告一个在窗口内的位置(PointA),而下一个报告将在窗口外(PointB)。如果您在拖动时使用 CaptureMouse 调用,您仍然可以在指针位于主机窗口之外时收到鼠标位置报告。当您发现您已经移出窗口时,您可以假设鼠标位于窗口边缘。也就是说,如果您要从 PointA 到 PointB 绘制一条假想线,您可以假设您的最后一点是该线穿过窗口边界的位置。如果您不使用 MouseCapture,或者您使用的是无窗口插件,我认为您在窗口外拖动时不会看到鼠标事件。在这种情况下,估计鼠标越过窗口边界的位置就比较困难了。

    【讨论】:

      【解决方案2】:

      经过一番挖掘,我发现弹出窗口没有标准的拖动机制,但一位同事已经实现了它。很容易扩展代码以将弹出窗口限制在主机窗口中。虽然它的行为有点奇怪。缓慢而平滑的拖动允许弹出窗口向上移动到主窗口的边缘,但快速不稳定的拖动会导致它在完全到达边缘之前停止。仍在试图弄清楚为什么会这样。

      【讨论】:

        【解决方案3】:

        处理此问题的最佳方法是防止用户将其拖到浏览器窗口之外。为此,您可以获得Silverlight host control 的宽度和高度。获得该信息后,您可以在用户拖动窗口时检查窗口的位置,并且不要让它们超出窗口的范围。

        【讨论】:

          【解决方案4】:

          可能是因为 Mouse_Leave 事件正在触发??

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-12-20
            • 2013-07-03
            • 2012-06-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-04-09
            相关资源
            最近更新 更多