リストビューがあります。リストビューで注文番号をクリックすると、注文に関する詳細を編集するためのグリッドがポップアップ表示されます。
ポップアップするこのグリッドは、このコードを介してドラッグ可能です (tt は translatetransform です):
Point m_start;
Vector m_startOffset;
private void Grid_MouseDown(object sender, MouseButtonEventArgs e)
{
m_start = e.GetPosition(mainWindow);
m_startOffset = new Vector(tt.X, tt.Y);
gridShippingInstructionsForOrder.CaptureMouse();
}
private void Grid_MouseMove(object sender, MouseEventArgs e)
{
if (gridShippingInstructionsForOrder.IsMouseCaptured)
{
Vector offset = Point.Subtract(e.GetPosition(mainWindow), m_start);
tt.X = m_startOffset.X + offset.X;
tt.Y = m_startOffset.Y + offset.Y;
}
}
private void Grid_MouseUp(object sender, MouseButtonEventArgs e)
{
gridShippingInstructionsForOrder.ReleaseMouseCapture();
}
ここでの問題は、画面の下部にある注文をクリックすると、グリッドが画面から半分飛び出し、それを画面にドラッグすると半分に切り刻まれることです! (画面中央にドラッグした後でも)