2016-04-22 58 views
2

我有一個4 UEElement的網格。我已經訂閱了所有元素上的ManipulationStarted和ManipulationCompleted事件。如何使用相同的觸摸開啓多個UIElement上的操作開始?

On ManipulationStarted我改變了元素的顏色,並在ManipulationCompleted上將其設置回原始的顏色。

這是有效的,但只適用於一個項目,如果我點擊一個項目,然後,不離開我的手指,我移動到另一個,它不會改變顏色。

這樣可以很清楚:

This is the normal situation

這是我所看到的,當我打開應用程序。網格中的4個UIElements(矩形)。

This is what happens when I press on an element

這是我所看到的,當我拿着一個長方形的手指。

This is what I want to happen

這就是我想,當我拿着一個長方形的手指,然後我繼續前進另一個手指無需提起手指發生,但它不會發生。它只適用於一個矩形。

這是在每一個矩形的事件代碼:

private void Rectangle_ManipulationStarted(object sender, System.Windows.Input.ManipulationStartedEventArgs e) 
{ 
    e.Handled = true; 
    if(sender is Rectangle) 
     ((Rectangle)sender).Fill = new SolidColorBrush(Colors.Purple); 
} 

private void Rectangle_ManipulationCompleted(object sender, System.Windows.Input.ManipulationCompletedEventArgs e) 
{ 
    e.Handled = true; 
    if (sender is Rectangle) 
     ((Rectangle)sender).Fill = originalColor; 
} 
+0

您是否試圖讓交互變成如果您握住一個矩形並將您的手指移動到另一個矩形,而不是您移動手指的矩形變成與您的移動起源的矩形相同的顏色? –

+0

這更像是你有一個默認的顏色(紫色,在我的情況下),應該設置爲您在移動手指時觸摸的每個矩形。當你鬆開手指時,他們會恢復原來的顏色。 – AshleyT

+1

這是一個寬泛的範例,只能說明自己,但這需要一些修補時間。您的操作/觸摸事件將與啓動它們的對象綁定。我腦海中的情景基本上需要一些碰撞檢測。或者....如果它們的大小是固定的,那麼擁有邏輯就會容易得多,例如,如果對象的寬度(或高度)與兄弟對象的寬度(或高度)相同,就會改變其顏色,您可以將其傳遞給基於旁邊或上方/下方的任何內容在操縱的X方向還是Y方向。 –

回答

0

解決了! :D

我在矩形上使用了MouseEnter事件來改變網格上的顏色和MouseLeave,它們包含它們以將其設置回原始的顏色!它完美無瑕! :D

相關問題