0
我正嘗試在WPF應用程序中使用鼠標移動按鈕。WPF Move elemnt with mouse
有XAML網格是結構的根:
<Grid Name="MyGrid" >
<Button Name="Samplebutton"
PreviewMouseDown="Samplebutton_PreviewMouseDown"
PreviewMouseUp="Samplebutton_PreviewMouseUp"
PreviewMouseMove="Samplebutton_PreviewMouseMove"
Content="Moving" Width="100" Height="35"/>
</Grid>
而後面的代碼:
private bool _isMoving;
private void Samplebutton_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
_isMoving = true;
}
private void Samplebutton_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
_isMoving = false;
}
private void Samplebutton_PreviewMouseMove(object sender, MouseEventArgs e)
{
if (!_isMoving) return;
TranslateTransform transform = new TranslateTransform();
transform.X = Mouse.GetPosition(MyGrid).X;
transform.Y = Mouse.GetPosition(MyGrid).Y;
this.Samplebutton.RenderTransform = transform;
}
首先點擊進入按鈕移至他遠,然後我可以移動按鈕,但對於第一次將按鈕移開。我錯過了什麼?
TranslateTransform是從按鈕的原始位置進行相對翻譯。網格元素內的鼠標位置是絕對的。我認爲你必須做一些數學,並減去按鈕的原始位置,以將絕對值轉換爲相對距離。 – Auskennfuchs