精通Silverlight——11.3.2 XAML代码的错误处理 .

精通Silverlight——11.3.2 XAML代码的错误处理 .,第1张

概述  有时候会遇到一些XAML代码解析错误,比如当XAML代码出现错误时,还是能够通过编辑,但是在解析该XAML代码时会d出一些奇怪的错误提示,如图11.13所示。 图11.13  XAML解析错误 由上图可以发现,这是一个JavaScript应用程序错误,在HTML文件的后置JavaScript文件中,createSilverlight方法用于创建Silverlight插件,该方法提供了一个OnE   有时候会遇到一些XAML代码解析错误,比如当XAML代码出现错误时,还是能够通过编辑,但是在解析该XAML代码时会d出一些奇怪的错误提示,如图11.13所示。

11.13  XAML解析错误

由上图可以发现,这是一个JavaScript应用程序错误,在HTML文件的后置JavaScript文件中,createSilverlight方法用于创建Silverlight插件,该方法提供了一个OnError事件,可以处理Silverlgiht解析错误、运行时错误以及其他类型的错误。

为了定义这个事件,首先打开TestPage.HTML.Js文件,为CreateSilverlight函数添加OnError事件,代码如下所示。

//contains calls to silverlight.Js,example below loads Page.xaml

function createSilverlight()

{

         Silverlight.createObjectEx({

                   source: "Page.xaml",

                   parentElement: document.getElementByID("SilverlightControlHost"),

                   ID: "SilverlightControl",

                   propertIEs: {

                            wIDth: "100%",

                            height: "100%",

                            version: "1.1",

                            enableHTMLAccess: "true"

                   },

                   //添加一个处理错误的事件处理代码,注意在Silverlight1.1中,这个事件处理名称不能是字符串。

                   //否则浏览器会提示一个JavaScript错误

                   events: {onError:OnErrorEventHandler} // Set the onError handler.

         });        

         // Give the keyboard focus to the Silverlight control by default

    document.body.onload = function() {

      var silverlightControl = document.getElementByID('SilverlightControl');

      if (silverlightControl)

      silverlightControl.focus();

    }

}

代码在events中定义了onError事件,与Silverlight 1.0不同的是,这里的事件处理函数名称不应该是一个字符串。否则浏览器会提示错误。

接下来定义OnErrorEventHandler的事件处理代码,如下所示。

function OnErrorEventHandler(sender,errorArgs)

{

    // 显示错误消息

    var errorMsg = "Silverlight Error: /n/n";

    errorMsg += "Common Error Info:/n/n ";

    //通用错误信息

    errorMsg += "Error Type:    " + errorArgs.errorType + "/n";

    errorMsg += "Error Message: " + errorArgs.errorMessage + "/n";

    errorMsg += "Error Code:    " + errorArgs.errorCode + "/n";   

    // 通过判断错误的类型来产生错误信息

    switch(errorArgs.errorType)

    {

        case "RuntimeError":

            // 显示RuntimeErrorEventArgs的特定属性

            if (errorArgs.lineNumber != 0)

            {

                errorMsg += "line: " + errorArgs.lineNumber + "/n";

                errorMsg += "position: " +  errorArgs.charposition + "/n";

            }

            errorMsg += "Methodname: " + errorArgs.methodname + "/n";

            break;

        case "ParserError":

            // 显示ParserErrorEventArgs的特定属性

            errorMsg += "Xaml file:      " + errorArgs.xamlfile      + "/n";

            errorMsg += "Xml Element:    " + errorArgs.xmlElement    + "/n";

            errorMsg += "Xml Attribute:  " + errorArgs.xmlAttribute  + "/n";

            errorMsg += "line:           " + errorArgs.lineNumber    + "/n";

            errorMsg += "position:       " + errorArgs.charposition  + "/n";

            break;

        default:

            break;

    }

    // d出错误

    alert(errorMsg);

}

现在运行程序,则会d出刚才所定义的错误窗口,如图11.14所示。

11.14  定制的错误提示

同样,读者也可以发挥想象力来订制错误的提示,一个问题是不支持中文,希望在Silverlight的后续版本中能够得到改进。

总结

以上是内存溢出为你收集整理的精通Silverlight——11.3.2 XAML代码的错误处理 .全部内容,希望文章能够帮你解决精通Silverlight——11.3.2 XAML代码的错误处理 .所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1070436.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存