2016-04-22 14 views
2

私は4つのUIElementを持つグリッドを持っています。私はすべての要素でManipulationStartedとManipulationCompletedというイベントを購読しました。同じタッチで複数のUIElementでManipulationStartedを実行する方法はありますか?

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

これは私が四角形の上に指を保持し、その後、私は指を持ち上げることなく別のものに指を動かしたときに起こるしたいものですが、それは起こりません。 1つの長方形だけで動作します。

これは、すべての長方形の上にあるイベントのコードです:

解決
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

あなたが1つの矩形を保持し、指を別の矩形に移動した場合のようなやりかたをしようとしていますか?あなたの指が動いている矩形が、 –

+0

それはあなたの指を動かす間に触れるすべての矩形に設定する必要があるデフォルトの色(私の場合は紫色)のようです。指を離すと元の色に戻ります。 – AshleyT

+1

広い意味では、自分のために話すことしかできませんでしたが、時間がかかります。あなたの操作/タッチイベントは、それらを開始するオブジェクトに結び付けられます。あなたのシナリオでは、基本的にいくつかの衝突検出が必要になります。または、もしそれらが固定サイズであれば、操作>オブジェクトの幅(または高さ)のようなロジックを持つほうがずっと簡単になり、兄弟は色を変えます。これは、横または上/下に基づいて渡す​​ことができますそれが操作のX方向であるかY方向であるかに依存します。 –

答えて

0

! :D

私は矩形でMouseEnterイベントを使用して、元のものに戻すためにそれらを含むグリッドの色とMouseLeaveを変更しました!それは完璧に動作します! :D

関連する問題