图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代码的错误处理 .所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)