我正在使用 Silverlight 5 构建 3D 应用程序。我有一个调用方法的 DrawingSurface。但是,当我将 navigation:Frame 添加到我的 XAML 时,我会抛出一个错误。
这里是有问题的方法:
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”。没有导航就不会发生:框架。
最佳答案
从这段代码我们可以得出的唯一结论是,当您进入此方法时,“vertexBuffer”为空或 null。 “DrawPrimitive”方法在本地使用的那个或一些变量。
我不知道这个变量是如何填充的,但总的来说,当您不能 100% 确定是否预先填充了内容时,始终检查 null 或 empty 是一个很好的做法。
关于c# - 添加导航 :Frame causes NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26535098/