Silverlight的设计视图出现错误,但是运行程序没问题。
错误信息:
System.Xml.XmlException
[Xml_CannotFindFileInXapPackage]
参数: ServiceReferences.ClientConfig
调试资源字符串不可用。键和参数通常会提供足够的信息来诊断问题。请参见 http://go.microsoft.com/fwlink/?linkid=106663&Version=4.0.50917.0&File=System.Xml.dll&Key=Xml_CannotFindFileInXapPackage
在 System.Xml.XmlXapResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn)
在 System.Xml.XmlReaderSettings.CreateReader(String inputUri, XmlParserContext inputContext)
在 System.Xml.XmlReader.Create(String inputUri, XmlReaderSettings settings, XmlParserContext inputContext)
在 System.ServiceModel.Configuration.ServiceModelSectionGroup.GetSectionGroup()
解决方法:
1.百度
百度出的解决办法是说:
在设计视图中,集成开发环境(IDE)要预处理一部分XAML和代码,将界面显示出来,其中就要运行到构造函数里的代码,你可能在构造函数里写入了部分业务逻辑,以至于不能进行预处理,所以你在开发环境下看不到界面,解决方法如下:
在构造函数中使用DesignerProperties.GetIsInDesignMode(this)判断是否正在IDE中设计
public InitialPage() { InitializeComponent(); if (!DesignerProperties.GetIsInDesignMode(this)) { //your Initial code } }
结合我程序的情况,我将Silverlight页面构造函数及Load事件中调用WCF服务的代码都用上述GetIsInDesignMode()方法判断。结果设计器仍然还在报错。
2.MSDN
点击设计器报错界面的帮助,导航至MSDN:
想到我还有一些自定义控件的构造函数及Load事件没用GetIsInDesignMode()方法判断,于是迅速处理完,设计器恢复正常。