Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF移动网格错误_C#_Wpf - Fatal编程技术网

C# WPF移动网格错误

C# WPF移动网格错误,c#,wpf,C#,Wpf,我在尝试新的东西。我有几个网格,当我试图抓取一个网格时,我想把它的父网格移到顶部网格周围。此时,我在m_startOffset=newvector(translate.X,translate.Y)上得到一个System.NullReferenceException。有人知道我应该如何解决这个问题吗 用户界面: 在XAML中声明父网格的RenderTransform: <Grid x:Name="GRLogin" Margin="1401,292,0,0" HorizontalAlignme

我在尝试新的东西。我有几个网格,当我试图抓取一个网格时,我想把它的父网格移到顶部网格周围。此时,我在
m_startOffset=newvector(translate.X,translate.Y)上得到一个System.NullReferenceException。有人知道我应该如何解决这个问题吗

用户界面:


在XAML中声明父网格的RenderTransform:

<Grid x:Name="GRLogin" Margin="1401,292,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Width="501" d:IsHidden="True" Focusable="True">
    <Grid.RenderTransform>
        <TranslateTransform/>
    </Grid.RenderTransform>
    ...
</Grid>

...

您还可以检查RenderTransform是否为null,在这种情况下,您可以将其设置为:
element.RenderTransform=new TranslateTransform()

谢谢,出于某种奇怪的原因,当我这样做时,它什么也做不了。看起来te程序没有响应,因为它不会对任何其他输入做出反应。
    private void Grid_MouseDown(object sender, MouseButtonEventArgs e)
    {
        FrameworkElement element = ((Grid)sender).Parent as Grid;
        TranslateTransform translate = element.RenderTransform as TranslateTransform;

        m_start = e.GetPosition(GridHost);
        m_startOffset = new Vector(translate.X, translate.Y);
        element.CaptureMouse();
    }

    private void Grid_MouseMove(object sender, MouseEventArgs e)
    {
        FrameworkElement element = ((Grid)sender).Parent as Grid;
        TranslateTransform translate = element.RenderTransform as TranslateTransform;

        if (element.IsMouseCaptured)
        {
            Vector offset = Point.Subtract(e.GetPosition(GridHost), m_start);

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

    private void Grid_MouseUp(object sender, MouseButtonEventArgs e)
    {
        FrameworkElement element = ((Grid)sender).Parent as Grid;
        element.ReleaseMouseCapture();
    }
<Grid x:Name="GRLogin" Margin="1401,292,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Width="501" d:IsHidden="True" Focusable="True">
    <Grid.RenderTransform>
        <TranslateTransform/>
    </Grid.RenderTransform>
    ...
</Grid>