C# 当加载一半屏幕外时,网格被切成两半

C# 当加载一半屏幕外时,网格被切成两半,c#,wpf,C#,Wpf,我有一个列表视图,在列表视图中你可以点击订单号,它会弹出一个网格来编辑订单的详细信息 它弹出的网格可通过此代码拖动(tt是translatetransform): 现在的问题是,当你点击屏幕底部的订单时,它会弹出屏幕一半的网格,当你把它拖到屏幕上时,它会被切成两半!(即使将其拖回屏幕中间) 什么是tt?这个网格在画布中吗?tt是一个与网格关联的转换,不,它不在画布中,但它在ViewBox中。您提供的代码看起来不错,问题一定在其他地方。如果您转换作为网格容器的ViewBox呢? Po

我有一个列表视图,在列表视图中你可以点击订单号,它会弹出一个网格来编辑订单的详细信息

它弹出的网格可通过此代码拖动(tt是translatetransform):

现在的问题是,当你点击屏幕底部的订单时,它会弹出屏幕一半的网格,当你把它拖到屏幕上时,它会被切成两半!(即使将其拖回屏幕中间)


什么是
tt
?这个网格在画布中吗?tt是一个与网格关联的转换,不,它不在画布中,但它在ViewBox中。您提供的代码看起来不错,问题一定在其他地方。如果您转换作为网格容器的ViewBox呢?
     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();
    }