c# - 添加导航 :Frame causes NullReferenceException

标签 c# visual-studio-2010 silverlight xna silverlight-5.0

我正在使用 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/

相关文章:

silverlight - 什么时候是切换到新技术的合适时机?

c# - 序列化 XmlDocument 并通过 HTTPWebRequest 发送

c# - 将 where 子句添加到嵌套的 Linq 选择

c# - 使用 LINQ 查询动态数据

c++ - 带有状态分配器的 std::vector::swap() 是否应该使所有迭代器失效?

visual-studio-2010 - Visual Studio 可执行文件运行两次

javascript - 停止刷新 token 的竞争条件?

c++ - 启动使用附加库的可执行程序

c# - 自定义依赖属性不起作用

c# - 如何根据 Windows 8 xaml 中的文本长度调整文本 block 的字体大小