添加导航:帧导致NullReferenceException

本文关键字:NullReferenceException 导航 添加 | 更新日期: 2023-09-27 18:27:47

我正在使用Silverlight 5构建一个3D应用程序。我有一个DrawingSurface,它调用了一个方法。但是,当我在XAML中添加navigation:Frame时,会抛出一个错误。

以下是有问题的方法:

private void DrawingSurface_Draw(object sender, DrawEventArgs e)
{
    GraphicsDevice device = GraphicsDeviceManager.Current.GraphicsDevice;
    device.Clear(ClearOptions.Target | ClearOptions.DepthBuffer,
                 new Microsoft.Xna.Framework.Color(0, 0, 0, 0), 10.0f, 0);
    device.SetVertexBuffer(_vertexBuffer);
    device.SetVertexShader(_vertexShader);
    device.SetPixelShader(_pixelShader);
    device.Textures[0] = _texture;
    device.SamplerStates[0] = SamplerState.LinearClamp;
    device.DrawPrimitives(PrimitiveType.TriangleList, 0,
                          _vertexBuffer.VertexCount / 3);
    device.SetVertexShaderConstantFloat4(0, ref _viewProjection);
    e.InvalidateSurface();
}

错误出现在线路device.DrawPrimitives(PrimitiveType.TriangleList, 0, _vertexBuffer.VertexCount / 3);上。错误是"用户代码未处理NullReferenceException。"如果没有导航:Frame,则不会发生此错误。

添加导航:帧导致NullReferenceException

从这段代码中,我们可以得出的唯一结论是,当您输入此方法时,"vertex Buffer"为空或null。"DrawPrimitive"方法在本地使用的那个或一些可变额。

我不知道这个变量是如何填充的,但总的来说,当你不能100%确定提前填充时,最好总是检查null或空。