我有一个弹出式控件,我添加了一个拇指,所以我可以拖动它在屏幕上。拇指的DragDelta事件超载与此:WPF拇指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
,同时它移动到另一台显示器这给弹出的这个奇怪的频闪效果;我需要做些什么才能让它在各个显示器上平滑过渡?
弹出窗口重新定位本身,然后到达屏幕边缘。看看这个问题 - http://stackoverflow.com/questions/1652773/make-a-wpf-popup-not-screen-bound。 – Nikolay 2012-07-30 13:56:13
@Nikolay我看了一下这个问题,但我不确定如何实现它;你能否提供更多的信息来了解我需要做些什么来利用所提供的代码?例如,我如何访问HostPopup类? Move()方法在哪里实现? mPreviousDiffX,mPreviousDiffY,mIsMoving,mIsThumbDragging等只是本地的私有变量? – Saggio 2012-07-30 15:54:41