2011-03-30 68 views
0

我有一個可以在一些邊界內拖動的矩形。這適用於鼠標。WPF:通過觸摸拖動元素非常不穩

只要將IsManipulationEnabled設置爲true,鼠標事件就不再起作用。 但是我需要這個來獲得矩形上的觸摸事件。因此我將它設置爲true。

我試圖計算ManipulationDelta事件中的所有更改,如下面的函數。 縮放工程已經很不錯了,但是通過用手指拖動物體來移動物體非常不連貫+有時候矩形來回跳動。

private void UserControl_ManipulationDelta(object sender, ManipulationDeltaEventArgs e) 
{ 
    //Scaling works already pretty good 
    RangeBar.Width *= e.DeltaManipulation.Scale.X; 

    //Moving the element is very choppy, what am I doing wrong here? 
    this.startX = this.startX + e.DeltaManipulation.Translation.X; 
    RangeBar.SetValue(Canvas.LeftProperty, startX); 
} 
+0

嗯,我看到一個紅旗。我不一定認爲這與操縱與鼠標本身有關,但可能是一個潛在的問題,由於操縱性能較差而暴露出來。 – 2011-03-31 05:49:31

回答

1

我想嘗試使用CumulativeManipulation。

無論何時我需要通過拖動來進行UI元素移動,我都不會嘗試重複使用相同的變量並按增量對其進行修改,然後重新使用該變量來設置位置。無論平臺如何,它幾乎總會給我帶來穩定性問題。相反,嘗試在拖動開始時存儲變量,並僅在需要更新位置時將增量添加到該變量。所以更像這樣的東西:

點的起源;

void MouseDown(Point location) { origin = location; }

空隙MouseDrag(向量cumulativeOffset) { SetControlLocation(原點+ cumulativeOffset); }

另外,ManipulationEvent的來源是什麼?你一定要確保它不是當前的矩形,否則這肯定會導致你看到的問題。