我有一个 Popup 控件,我在其中添加了一个拇指,以便可以在屏幕上拖动它。拇指的 DragDelta 事件被重载:
private static void Thumb_DragDelta(object sender, DragDeltaEventArgs e)
{
Thumb thumb = (Thumb)sender;
Popup popup = thumb.Tag as Popup;
if (popup != null)
{
popup.HorizontalOffset += e.HorizontalChange;
popup.VerticalOffset += e.VerticalChange;
}
}
拖动效果很好(我使用了这里的拖动示例:http: //www.codeproject.com/Articles/43636/WPF-A-search),除了当弹出窗口到达监视器的末端并跨越到其他(双显示器设置)。例如,如果我在左侧显示器上打开弹出窗口并开始向右拖动它,当它的右边框接触显示器的边缘时,它的移动是不稳定的并开始四处移动,直到我进一步向右移动并显示在另一个监视器。
我通过这个场景进行了调试,这是一个基本上发生了什么的数字示例:
At edge of screen:
HorizontalOffset = 600
HorizontalChange = 1
Move Right:
HorizontalOffset = 601
HorizontalChange = -800
HorizontalOffset = -199
HorizontalChange = 401
HorizontalOffset = 200
HorizontalChange = -150
当它移动到另一台显示器时,这会产生这种奇怪的频闪效果;我需要做些什么来让它在显示器之间平稳过渡吗?