Head First C# Save the Humans

我是一个C#语言的初学者,希望通过这个博客和大家交流学习时发现的问题和学习经验。与此同时还可以作为一个督促自己坚持的办法。希望这个栏目不要断更。同时我使用的教程是“Head First C#”。

废话不多说,让我决定开始写这篇博客的主要原因是,我在做本书的第一个例程时发现,当程序运行到

  private void AddEnemy()
        {
            ContentControl enemy = new ContentControl();
           enemy.Template = Resources["EnemyTemplate"] as ControlTemplate;
            AnimateEnemy(enemy, 0, playArea.ActualWidth - 100, "(Canvas.Left)");
            AnimateEnemy(enemy, random.Next((int)playArea.ActualHeight - 100),
                random.Next((int)playArea.ActualHeight - 100), "(Canvas.Top)");
            playArea.Children.Add(enemy);
        }

这段代码时,会出现一个致命的错误,错误信息如下

在运行时,点击start按钮后出现中断,错误信息如下:
“System.Runtime.InteropServices.COMException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理
WinRT 信息: Cannot find a resource with the given key.

经过我调试后发现,程序会在

enemy.Template = Resources["EnemyTemplate"] as ControlTemplate;
	这段代码运行后,出现强制中断的情况。然而语句本身看不到任何问题。
	于是我检查了ControlTemplate 这个类的说明,了解了使用方法之后,在MainPag.xaml中找到了这个模板的定义。我发现在定义中
<ContentControl Content="ContentControl" HorizontalAlignment="Center" VerticalAlignment="Center" Template="{StaticResource EnemyTemplat}"/>
最后的Template 的标记(姑且让我这么叫他)。是EnemyTemplat而不是书上的代码设计中的EnemyTemplate注意最后一个e。然而这段代码好像是自动生成的,也许是我不记得了
这里先留个疑问。那么问题就好解决了。只需将AddEnemy()中的EnemyTemplate的e去掉就可以了
    这里还有一些不是很明白的地方,就是我打算直接更改xaml中的template的定义的时候却会报错。
    第一篇学习笔记,第一次用CSDN有很多不足的地方希望大家指正。
    


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值