我有一个小的 Silverlight 3 测试应用程序。这是一个学习Silverlight、XAML、绑定等的练习。我有一个小测试类(Test),它有三个属性;Val1、Val2 和总和。我在 XAML 中声明了一个资源,如下所示:
<UserControl.Resources>
<app:Test x:Name="xamlTestObj"></app:Test>
</UserControl.Resources>
我在用户控件上有一个按钮。此按钮背后的代码如下所示:
xamlTestObj.Val1 += 100;
xamlTestObj.Val2 += 300;
解决方案构建成功,但是当我运行它时,在引用 xamlTestObj 时,我在按钮处理程序中收到 NullReferenceException。如果我将对象从用户控件的资源列表中拉出,我就能够成功执行按钮单击。像:
Test xamlTestObj = (Test)Resources["xamlTestObj"];
xamlTestObj.Val1 += 100;
xamlTestObj.Val2 += 300;
让我感到困惑的是为什么我需要将对象从资源列表中拉出来。在我看来,如果编译器可以看到 xamlTestObj 引用,它应该在它声明的范围的生命周期内“活”(在这种情况下,用户控件)。WPF 控件以这种方式运行。也就是说,我可以访问我放置在用户控件上的任何文本框和按钮。
谁能帮我解决这个问题?
谢谢 :-)