我想讓多個按鈕在WP 7/8上完全獨立拖動,但我遇到了一些麻煩。在多個按鈕上實現拖放操作
我的主要問題是,我有這樣的佈局設置...
而且我希望能夠independetly拖動按鈕的路程,如果我想要的。現在拖動工作正常,只要一個按鈕,但只要我釋放它並嘗試拖動另一個按鈕,它只是「按住」我按下的第一個按鈕旁邊,然後繼續,直到所有按鈕都移動到同一時間。
所以基本上當這種「捕捉」發生時,多個按鈕開始一起移動,就好像它們只有一個按鈕一樣。
這裏是我的XAML代碼:
<Grid Name="buttons_container" Grid.Row="1" Margin="0,0,0,0">
<toolkit:WrapPanel HorizontalAlignment="Center" Margin="0,0,0,0" Name="wrapPanel1" VerticalAlignment="Center" Width="600">
<Button ManipulationDelta="Drag_ManipulationDelta" Content="1" Height="70" Name="button2" Width="150">
</Button>
<Button ManipulationDelta="Drag_ManipulationDelta" Content="2" Height="70" Name="button3" Width="150" ></Button>
<Button ManipulationDelta="Drag_ManipulationDelta" Content="3" Height="70" Name="button4" Width="150"></Button>
<Button ManipulationDelta="Drag_ManipulationDelta" Content="4" Height="70" Name="button5" Width="150"></Button>
<Button ManipulationDelta="Drag_ManipulationDelta" Content="5" Height="70" Name="button6" Width="150"></Button>
<Button ManipulationDelta="Drag_ManipulationDelta" Content="6" Height="70" Name="button7" Width="150"></Button>
<Button ManipulationDelta="Drag_ManipulationDelta" Content="7" Height="70" Name="button8" Width="150"></Button>
<Button ManipulationDelta="Drag_ManipulationDelta" Content="8" Height="70" Name="button9" Width="150"></Button>
<Button ManipulationDelta="Drag_ManipulationDelta" Content="9" Height="70" Name="button10" Width="150"></Button>
<Button ManipulationDelta="Drag_ManipulationDelta" Content="10" Height="70" Name="button11" Width="150"></Button>
<Button ManipulationDelta="Drag_ManipulationDelta" Content="11" Height="70" Name="button12" Width="150"></Button>
<Button ManipulationDelta="Drag_ManipulationDelta" Content="12" Height="70" Name="button13" Width="150"></Button>
</toolkit:WrapPanel>
</Grid>
這裏是我的C#代碼:
private TranslateTransform dragTranslation; - global
dragTranslation = new TranslateTransform(); - in constructor of the class
void Drag_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
Button draggedButton = (Button)sender;
draggedButton.RenderTransform = dragTranslation;
dragTranslation.X += e.DeltaManipulation.Translation.X;
dragTranslation.Y += e.DeltaManipulation.Translation.Y;
}
感謝您的回答!但是,如果我進行了您提到的更改,則按鈕會「卡」到其初始位置。他們看起來像是在「試圖」逃離,但是一股巨大的磁力正在讓他們失望。這很難解釋。 – PeterInvincible
也許嘗試從其他答案的建議,嘗試在事件處理程序('dragTranslation = new TranslateTransform();')中創建新的TraslateTransform,而不是重複使用同一個對象。 – har07
如果我這樣做,會發生同樣的事情。在我看來,由於事件處理程序每次移動像素(「拖動」)時都會被調用,並且正在重置我試圖拖動的按鈕的初始位置。如果我非常小心又快速,我可以「輕彈」按鈕,但在我試圖再次拖動的那一刻,它會繼續。 – PeterInvincible