2014-10-10 51 views
0

我在WPF中創建了一個拇指。我使用DragDelta事件來改變一個值,使用鼠標點擊和拖動。WPF拇指拖動行爲錯誤

這裏是我的DragDelta代碼:

private void Thumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e) 
{ 
    MyValue = e.VerticalChange; 
} 

這工作得很好,但是,再次單擊我的按鈕時,該值從1開始的地步,我點擊(0)。我需要點擊並拖動以更改相對於原始的值。所以,我想這一點:

private void Thumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e) 
{ 
    MyValue += e.VerticalChange; 
} 

這個工作,但是當我拖垮,然後再次向上,值不斷下降,即使我移動鼠標備份。向上移動鼠標(數值增加)時,同樣的事情,然後向下移動鼠標(值不斷增加)。

+1

我自己遇到了這個問題。事實證明,在某些情況下,'e.Horizo​​ntalChange'和'e.VerticalChange'是相對於最後一個'DragStart'事件而不是最後一個'DragDelta'事件。 – rookie1024 2015-06-11 02:06:33

+0

我也遇到這個問題。只要我在發佈模式而不是調試模式下啓動應用程序,問題就消失了。 – chriga 2017-10-18 10:43:09

回答

0

這是它如何工作的:

double minLeft = double.MaxValue; 
double minTop = double.MaxValue; 
double left = Canvas.GetLeft(item); 
double top = Canvas.GetTop(item); 

minLeft = double.IsNaN(left) ? 0 : Math.Min(left, minLeft); 
minTop = double.IsNaN(top) ? 0 : Math.Min(top, minTop); 

double deltaHorizontal = Math.Max(-minLeft, e.HorizontalChange); 
double deltaVertical = Math.Max(-minTop, e.VerticalChange); 

更換與畫布的容器控件。