第一次学习Silverlight,写下自己的学习日记以加强对基础知识的掌握;
XAML支持扩展应用语言(eXtended Application Markup Language)。XAML包含XML用于Silverlight或WPF应用程序声明特定的用户界面。
.xap文件是Silverlight应用程序输出的压缩文件。.xap文件包括AppManifes.xaml、编译输出的Silverlight项目程序集(.dll)和Silverlight应用程序需要的资源文件。在.aspx页面和.html页面中可以通过<object>标签来加载.xap文件;".xap"文件使用标准的.zip压缩算法,减少客户端下载文件的大小。我们可以查看项目文件夹下的bin/debug文件夹,你可以看见一个叫"SilverlightTest.xap"的文件,重命名这个文件为"SilverlightTest.zip"并解压它,可以看见它包含项目输出的dll文件和AppManifest.xaml等文件,打开项目下的Properties文件夹,其中有一个AppManifest.xml文件,此文件定义了开发客户端应用的程序集。
App.xaml文件是用于Silverlight应用程序声明共享资源,像笔刷、各种样式资源等。此外、App.xaml的后置代码用来处理全局应用级事件,像Application_Startup,Application_Exit和Application_UnhandledException等(类似于asp.net应用程序中的Global.asax文件)。Visual Studio自动创建App.xaml文件,它会为少数几个事件创建事件处理程序,并提供默认事件处理代码。自己可以适当的修改这些代码;
{
this .RootVisual = new MainPage();
}
private void Application_Exit( object sender, EventArgs e)
{
}
private void Application_UnhandledException( object sender, ApplicationUnhandledExceptionEventArgs e)
{
// 如果应用程序是在调试器外运行的,则使用浏览器的
// 异常机制报告该异常。在 IE 上,将在状态栏中用一个
// 黄色警报图标来显示该异常,而 Firefox 则会显示一个脚本错误。
if ( ! System.Diagnostics.Debugger.IsAttached)
{
// 注意: 这使应用程序可以在已引发异常但尚未处理该异常的情况下
// 继续运行。
// 对于生产应用程序,此错误处理应替换为向网站报告错误
// 并停止应用程序。
e.Handled = true ;
Deployment.Current.Dispatcher.BeginInvoke( delegate { ReportErrorToDOM(e); });
}
}
private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)
{
try
{
string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace;
errorMsg = errorMsg.Replace( ' " ' , ' \' ' ).Replace( " \r\n " , @" \n " );
System.Windows.Browser.HtmlPage.Window.Eval( " throw new Error(\"Unhandled Error in Silverlight Application " + errorMsg + " \"); " );
}
catch (Exception)
{
}
}
嗷嗷嗷。。。睡觉了。