如何在WPF窗口中移动网格面板

Ana*_*hah 2 c# wpf grid move

HI,

如何在WPF窗口内移动(拖动)网格面板?网格面板没有位置或位置或X和Y坐标属性.我所看到的就是使用鼠标将Grid Panel从当前位置移动到新位置,以便显示在其下方"埋葬"的控件.

有什么指针吗?

非常感谢.

Jos*_*h G 13

这里有一些代码示例可以帮助您入门:

在XAML中:

创建一个网格并在其上定义渲染变换:

<Grid x:Name="grid" Background="Blue" 
      Width="100" Height="100" 
      MouseDown="Grid_MouseDown" MouseMove="Grid_MouseMove" MouseUp="Grid_MouseUp">
    <Grid.RenderTransform>
        <TranslateTransform x:Name="tt"/>
    </Grid.RenderTransform>
</Grid>
Run Code Online (Sandbox Code Playgroud)

命名您希望网格在其中移动的控件:

<Window x:Name="window" ...>
    <Grid x:Name="grid"...
</Window>
Run Code Online (Sandbox Code Playgroud)

代码背后:

Point m_start;
Vector m_startOffset;

private void Grid_MouseDown(object sender, MouseButtonEventArgs e)
{
    m_start = e.GetPosition(window);
    m_startOffset = new Vector(tt.X, tt.Y);
    grid.CaptureMouse();
}

private void Grid_MouseMove(object sender, MouseEventArgs e)
{
    if (grid.IsMouseCaptured)
    {
        Vector offset = Point.Subtract(e.GetPosition(window), m_start);

        tt.X = m_startOffset.X + offset.X;
        tt.Y = m_startOffset.Y + offset.Y;
    }
}

private void Grid_MouseUp(object sender, MouseButtonEventArgs e)
{
    grid.ReleaseMouseCapture();
}
Run Code Online (Sandbox Code Playgroud)